【发布时间】:2015-01-29 15:24:25
【问题描述】:
我正在使用RawConfigParser 来读取和更新一个ini 样式的配置文件。这在标准配置中完全没有问题。
我的问题是我在同一个脚本中读取不同的配置文件。无需过多介绍,当我读取第二个配置文件时,它的值将与第一个 ini 文件合并。
两个ini文件的原始内容
infile_1.ini
[section]
option = Original value
extraoption = not in ini file 2
inifile_2.ini
[section]
option = Original value
这是我用来更改 ini 文件内容的代码。重现问题的一小段代码
import ConfigParser
class status_file:
myConfig = ConfigParser.RawConfigParser()
myConfig.optionxform = str
def __init__(self, str_statusfile):
self.myConfig.read( str_statusfile)
self.statusfile = str_statusfile
def option(self, new_value):
self.myConfig.set("section","option",new_value)
with open( self.statusfile, "w") as ini_out:
self.myConfig.write( ini_out )
statusfiles = ['inifile_1.ini', 'inifile_2.ini']
for myStatus in statusfiles:
myConfig = status_file(myStatus)
myConfig.option("Something new")
执行此代码后,ini 文件的内容已根据需要更改。但在第二个 ini 文件中,第一个 ini 文件中的选项被合并了。
infile_1.ini
[section]
option = Something New
extraoption = not in ini file 2
inifile_2.ini
[section]
option = Something New
extraoption = not in ini file 2
有什么方法可以重置ConfigParser 内容或其他解决方案吗?
我猜它与ConfigParser 对象的构造和解构有关?
我在没有上课的情况下尝试过,然后就没有问题了。
我是 Python 的初学者,所以这可能不是处理这个问题的最佳方法。
真正的应用程序是动态的,因为在应用程序的使用过程中,ini 文件的数量和位置会发生变化。 ini文件列表是用os.listdir(folder)构建的
【问题讨论】:
标签: python class configuration-files configparser