1

我正在使用RawConfigParser.ini将部分、选项和值从一个文件复制到另一个文件,以便将多个.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

4

1 回答 1

2

通过查看ConfigParser 源代码,看起来有一种特殊情况,该read()函数会将两个双引号作为一个值转换为一个空字符串。

不完全确定为什么做出这个决定,但这绝对是故意的行为,我认为你需要用你的 hackyif value == "": iniwriter.set(section_name,name,'""')来解决这个问题。

于 2013-10-31T16:59:39.260 回答