我正在使用ConfigObj (5.0.6,在Python2.7和Python3.8上)来管理我的配置,但是当我在写配置文件时,其中一些部分只在configspec中显示,它们只显示为空节,这是不希望的。我将非常感谢任何关于修复ConfigObj行为的建议。
发生了什么的最小示例:
from configobj import ConfigObj
from validate import Validator
spec = ["[Section]", "option = boolean(default=True)"]
config = ConfigObj(infile={'Section2': {'option2': False}}, configspec=spec)
config.validate(Validator())
print(config)
print(config.write())输出:
{'Section2': {'option2': False}, 'Section': {'option': True}}
['[Section2]', ' option2 = False', '[Section]']期望输出(写入时不能有空节):
{'Section2': {'option2': False}, 'Section': {'option': True}}
['[Section2]', ' option2 = False']编辑1:我使用write()来实际写入文件,所以我不希望只处理返回的字符串列表
发布于 2020-06-26 12:14:07
要将默认值放入输出配置文件中,请将copy = True传递给validate:
from configobj import ConfigObj
from validate import Validator
spec = ["[Section]", "option = boolean(default=True)"]
config = ConfigObj(infile={'Section2': {'option2': False}}, configspec=spec)
# set copy = True vvvvvvvvvvv
config.validate(Validator(), copy = True)
print(config)
print(config.write())它会给出您想要的输出
{'Section2': {'option2': False}, 'Section': {'option': True}}
['[Section2]', 'option2 = False', '[Section]', 'option = True']https://stackoverflow.com/questions/59615747
复制相似问题