用 configparser 更新配置项的时候怎么保留注释啊?

2021-05-27 08:06:24 +08:00
 fmdxx1991
一写入配置文件里的注释就全没了,影响可读性,百度了下,看解决办法要修改模块源码,有没有更好的办法啊?
2117 次点击
所在节点    Python
5 条回复
Vinty
2021-05-27 09:07:05 +08:00
很简单,修改前缀不要把它标记为注释读取就行

```
config.ini
[default_settings]
; comment
value = 1
```

```python
from configparser import ConfigParser
conf = ConfigParser(comment_prefixes='/', allow_no_value=True)
conf.read("config.ini")
with open("new_config.ini", "w") as fp:
conf.write(fp)
```
fmdxx1991
2021-05-27 10:28:59 +08:00
@Vinty 有点问题哎,
```
config.ini
[default_settings]
; comment
;value = 1
#value=2
value=3
```
注释是这个样子的,然后就报错了=。。=( option ';value' in section 'default_settings' already exists ),配置文件开头也有注释,运行的话也是直接报错
fmdxx1991
2021-05-27 10:44:54 +08:00
@fmdxx1991
[default_settings]
; comment
#value = 1
#value = 2
value=3
这样的,前面写错了
xingheng
2021-05-27 13:02:11 +08:00
换 yaml
Vinty
2021-05-27 15:35:26 +08:00
#2 因为 read 的时候就已经丢掉了注释,所以为了保存注释,这里把注释的前缀修改成了另一个字符`\`,然后把注释当作一条字段读取了进来,
你这里#value = 1, #value = 2 就是一个重复的字段了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/779462

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX