文章由来
先说一下背景吧!我们经常需要用到模块对标准conf文件进行配置操作,但实际使用过程中,我们会遇到需要在value中保存特殊符号的需求。比如:''' '"' '@' '%'等。在网上搜了很多文章都是在介绍configobj模块的使用方法,并没有做太多的解释。通过阅读官方文档发现其实是原生支持的,只需要配置相关参数,设置list_values=False即可。于是写下这篇文章介绍,希望可以帮到更多的人。
实际需求
当我们写入带引号的字符串信息时,希望value可保存引号信息。
未配置参数list_values=False前
parser = ConfigObj(configname)
parser['section']['option'] = '"keep the double quotas"'
parser.write()
# 得到实际结果如下
[section]
option = keep the double quotas. #自动去掉双引号
官方文档对list_values参数说明
‘list_values’: True
If True (the default) then list values are possible. If False, the values are not parsed for lists.
If list_values = False then single line values are not quoted or unquoted when reading and writing.
Changing this value affects whether single line values will be quoted or not when writing.
配置参数list_values=False后
parser = ConfigObj(configname, list_values=False)
parser['section']['option'] = '"keep the double quotas"'
parser.write()
# 得到实际结果如下
[section]
option = "keep the double quotas" #保留双引号
结论
使用configobj是原生支持引号保存到value中的,只是我们都不善于去阅读官方文档,转了一大圈,到最后还是从官方文档找到答案。