考虑以下代码,由于操作后单引号变成了双引号,因此无法回载json,如何将文件写为双引号列表,以便json可以回载?
import configparser
import json
config = configparser.ConfigParser()
config.read("config.ini")
l = json.loads(config.get('Basic', 'simple_list'))
new_config = configparser.ConfigParser()
new_config.add_section("Basic")
new_config.set('Basic', 'simple_list', str(l))
with open("config1.ini", 'w') as f:
new_config.write(f)
config = configparser.ConfigParser()
config.read("config1.ini")
l = json.loads(config.get('Basic', 'simple_list'))
settings.ini
文件内容如下:
[Basic]
simple_list = ["a", "b"]
答案 0 :(得分:0)
@ L3viathan已经提到过,纯粹的技术答案是“使用json.dumps()代替str()”(是的,它也适用于字典)。
但是:将json存储在ini文件中是非常的坏主意。 “ ini”是一种单独的文件格式(即使没有严格指定为json或yaml),并且它被设计为可以使用任何文本编辑器进行用户编辑。 FWIW,在ini文件中存储“列表”的简单规范方法就是将它们存储为逗号分隔的值,即:
[Basic]
simple_list = a,b
并在以
读取配置时将其解析回去values = config.get('Basic', 'simple_list')).split(",")
wrt /“ storing dicts”,一个ini文件已经是(某种)dict,因为它基于key:value对。它被限制为两个级别(部分和键),但这又是设计使然–它是一种为最终用户而不是为程序员设计的格式。
现在,如果ini格式不符合您的需求,那么什么都不会阻止您仅使用json(或yaml)文件代替整个配置