保持整理ConfigParser输出文件(Keep ConfigParser output file

2019-06-26 01:50发布

我发现与我的源代码控制与ConfigParser生成的输出文件的内容是从来没有以相同的顺序。 有时部分将改变地方或选项里面的部分,即使没有任何修改的值。

有没有办法让事情在配置文件中进行排序,这样我就不必在每次启动我的申请时间提交一些简单的改变?

Answer 1:

看起来这是固定的Python 3.1和2.7的推出下令词典:

标准库现在支持多个模块使用有序字典。 configparser模块用来在默认情况下使用它们。 这让配置文件读取,修改,然后在原来的顺序写回。



Answer 2:

号的ConfigParser库字典哈希顺序写的东西出来。 (你可以看到这一点,如果你看一下源代码)。有此模块做得更好的替代品。

我会看看我能找到一个和其添加在这里。

http://www.voidspace.org.uk/python/configobj.html#introduction是一个我在想的。 这不是一个简易替换,但它是非常容易使用。



Answer 3:

如果你想采取了一步比亚历山大永贝里的回答,也是部分,您可以使用以下各节的内容进行排序:

config = ConfigParser.ConfigParser({}, collections.OrderedDict)
config.read('testfile.ini')
# Order the content of each section alphabetically
for section in config._sections:
    config._sections[section] = collections.OrderedDict(sorted(config._sections[section].items(), key=lambda t: t[0]))

# Order all sections alphabetically
config._sections = collections.OrderedDict(sorted(config._sections.items(), key=lambda t: t[0] ))

# Write ini file to standard output
config.write(sys.stdout)

这将使用OrderdDict词典(保持顺序),并通过覆盖内部_sections字典排序从外部ConfigParser读取ini文件。



Answer 4:

ConfigParser是基于ini文件格式,谁在它的设计应该不会是为了敏感。 如果你的配置文件格式是敏感的订购,您不能使用ConfigParser。 它也可以迷惑人,如果你有一个ini型格式,对语句的顺序敏感...



文章来源: Keep ConfigParser output files sorted