告诉我,为什么再次调用 ConfigParser 会丢失注释?
(第一次打开时,添加了注释,然后从代码中删除,再次打开时,它们消失了,如何使它们不消失?)
解析器主要代码:
from configparser import ConfigParser
class MyCfg(ConfigParser):
def __init__(self, file: str='cfg.ini'):
self.file = file
self.optionxform = str
return super(MyCfg, self).__init__(allow_no_value=True)
def __getitem__(self, item):
try:
return super(MyCfg, self).__getitem__(item)
except KeyError:
self.add_section(item)
return super(MyCfg, self).__getitem__(item)
def __setitem__(self, item, val):
if val[0] == '#' or val[0] == ';':
self.__getitem__(item)
return super(MyCfg, self).set(item, val)
def read(self):
return super(MyCfg, self).read(self.file)
def write(self):
with open(self.file, 'w') as fp:
return super(MyCfg, self).write(fp)
if __name__ == '__main__':
cfg = MyCfg('settings.ini')
cfg.read()
cfg['section'] = '# Комментарий 1'
cfg['section']['option'] = 'option_value2'
cfg['section'] = '# Комментарий 2'
cfg['section']['tag'] = 'tag_value'
cfg['section'] = '# Комментарий 3'
cfg['another_section']['test'] = 'test_value'
cfg.write()
comment_prefixes='/'使用换行符作为注释前缀,
并且在阅读时不会将注释作为不必要的垃圾删除。
线:
return super(MyCfg, self).__init__(allow_no_value=True)改成:
return super(MyCfg, self).__init__(comment_prefixes='/', allow_no_value=True)