我正在将部分,选项和值从一个.ini
文件复制到另一个.ini
文件,以便将多个.ini
文件合并为一个RawConfigParser。
在一个来源[foo]
bar=""
中我有这个并希望将其复制:
[foo]
bar=
然而,我得到的结果是
'""'
这使我的要求失败,因为我测试的封闭外部程序不适用于此ini。
我尝试使用\"\"
,"\"\""
,''
,但没有成功。 (修改:请注意,在输出""
中也不会对我有任何好处,需要为import ConfigParser
inireader = ConfigParser.RawConfigParser()
inireader.read('source.ini')
iniwriter=ConfigParser.RawConfigParser()
for section_name in inireader.sections():
for name, value in inireader.items(section_name):
print name,value
if not iniwriter.has_section(section_name):
iniwriter.add_section(section_name)
iniwriter.set(section_name, name, value)
with open("output.ini", "wb") as f:
iniwriter.write(f)
)
我的代码是:
if value == "": iniwriter.set(section_name,name,'""')
{{1}}有效,但这是一个错误吗?或者我做错了什么?有一种非黑客的方法吗?
编辑:我正在使用 Python 2.7
答案 0 :(得分:2)
通过查看ConfigParser source code,看起来有一种特殊情况,read()
函数会将两个双引号作为值转换为空字符串。
不完全确定为什么做出这个决定,但这绝对是故意行为,我认为你需要和你的hacky if value == "": iniwriter.set(section_name,name,'""')
一起解决这个问题。