python读取ini_如何在Python中读取和写入INI文件

如何在Python 2.7中编辑INI文件

我正在尝试编辑已经具有我需要的节和选项的INI配置文件。 但是我需要根据wxPython中的checkboxlist更新值。 目前一切正常:)但我觉得有更好的方法。 这是我正在使用的功能片段的一部分。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21def read_or_write_file(self, file, section, passed_option =None,

value =None, read = True):

if read:

with open(file) as configfile:

config =ConfigParser.RawConfigParser()

config.readfp(configfile)

options =config.options(section)

for option in options:

file_settings[option] =config.get(section, option)

else:

with open(file, 'r+') as configfile:

config =ConfigParser.RawConfigParser()

config.readfp(configfile)

config.set(section, passed_option, value)

with open(file, 'r+') as configfile:

config.write(configfile)

这正是我想要的方式,我告诉它我想要读或写的东西,它的工作原理。

但是我写入文件的else:部分看起来很奇怪。 我必须先编辑config,然后重写configfile中的所有内容。

有没有办法只重写我正在改变的价值?

这是我的第一个问题,所以如果我忘了提一些东西让我知道。

还有一个信息点:

- 我查看了所有文档或者至少我能找到的文档

- 这是类似的,但不完全是我需要的

如何用Python3读写INI文件?

"有没有办法只重写我正在改变的价值?" 不,因为它是一个文本文件。 当你知道你正在编写的东西与你要替换的东西完全相同时,你只能进行选择性重写。 这通常不是文本文件的情况,并且它们几乎从未被这样对待过。

我只对该功能进行了一次小型重组,以消除冗余:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18def read_or_write_file(self, file, section, passed_option =None,

value =None, read = True):

config =ConfigParser.RawConfigParser()

with open(file) as configfile:

config.readfp(configfile)

if read:

options =config.options(section)

for option in options:

file_settings[option] =config.get(section, option)

else:

config.set(section, passed_option, value)

with open(file, 'w') as configfile:

config.write(configfile)

好吧,这是有道理的,我没有意识到你不能改变这样的文本文件。 这可以解释为什么我遇到问题让它发挥作用。 那我还有一个问题。 重写整个文本文件所花费的时间真的很重要吗? 或者我应该找出一种不同的方式来实现我想要做的事情?

还谢谢你:)

一个典型的.ini文件非常小,所以我不担心写出来的时间,不。

一般来说,这是不可能的,因为文件的工作方式。 您不能将字节"插入"文件 - 您始终会覆盖当前内容。

可以仅使用相同长度的内容重写文件的一部分,例如, 当您想要将字符串"XXX"更改为"YYY"时。 但这是一种常见的做法,只是不用担心它,并在每次需要时将这些文件序列化为一个整体。

感谢您的答复! 这是有道理的,我没有意识到没有办法插入新的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值