【问题标题】:Empty string not getting written with RawConfigParser未使用 RawConfigParser 写入空字符串
【发布时间】:2013-11-11 19:05:40
【问题描述】:

我将部分、选项和值从一个.ini 文件复制到另一个文件,以便将多个.ini 文件与RawConfigParser 合并为一个文件。

在一个来源.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

【问题讨论】:

    标签: python merge ini configparser


    【解决方案1】:

    ConfigParser source code 看来,似乎有一种特殊情况,read() 函数会将两个双引号作为一个值转换为一个空字符串。

    不完全确定做出该决定的原因,但这绝对是故意行为,我认为您需要使用您的 hacky if value == "": iniwriter.set(section_name,name,'""') 来解决此问题。

    【讨论】:

    • 嗯,你是对的。 RawConfigParser 出乎意料,甚至没有将其关闭的选项。感谢您挖掘它!
    猜你喜欢
    • 2020-03-26
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2017-01-12
    • 2020-11-20
    相关资源
    最近更新 更多