[英]Empty string not getting written with RawConfigParser
我正在将节,选项和值从一个.ini
文件复制到另一个文件,以便使用RawConfigParser将多个.ini
文件合并为一个。
在一个源.ini
我有此文件,希望将其复制:
[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,'""')
有效,但这是一个错误吗? 还是我做错了什么? 有没有非骇客的方式来做到这一点?
编辑 :我正在使用Python 2.7
通过查看ConfigParser源代码 ,似乎有一种特殊情况,其中read()
函数会将两个双引号作为值转换为空字符串。
不确定为什么要做出此决定,但绝对是故意的行为,我认为if value == "": iniwriter.set(section_name,name,'""')
可以解决,您将需要if value == "": iniwriter.set(section_name,name,'""')
。这个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.