簡體   English   中英

ConfigObj:防止寫入空部分

[英]ConfigObj: prevent writing empty sections

我正在使用 ConfigObj(5.0.6,在 python 2.7 和 python 3.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() 來實際寫入文件,所以我不希望只是弄亂返回的字符串列表

要將默認值放在輸出配置文件中,請將copy = True傳遞給驗證:

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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM