我有一个词典列表。有时,我想更改并保存其中一个词典,以便在重新启动脚本时使用新消息。现在,我通过修改脚本并重新运行来进行更改。我想把它从脚本中拉出来并将字典列表放到某种配置文件中。
我找到了关于如何将列表写入file的答案,但这假设它是一个平面列表。我怎么能用词典列表来做呢?
我的列表如下所示:
logic_steps = [
{
'pattern': "asdfghjkl",
'message': "This is not possible"
},
{
'pattern': "anotherpatterntomatch",
'message': "The parameter provided application is invalid"
},
{
'pattern': "athirdpatterntomatch",
'message': "Expected value for debugging"
},
]
答案 0 :(得分:25)
前提是该对象只包含JSON可以处理的对象(lists
,tuples
,strings
,dicts
,numbers
,None
,True
和False
),您可以将其转储为json.dump:
import json
with open('outputfile', 'w') as fout:
json.dump(your_list_of_dict, fout)
答案 1 :(得分:4)
如果您希望每行字典在一行中:
import json
output_file = open(dest_file, 'w', encoding='utf-8')
for dic in dic_list:
json.dump(dic, output_file)
output_file.write("\n")
答案 2 :(得分:2)
您必须遵循将dict写入文件的方式与您提到的帖子有所不同。
首先,您需要序列化对象而不是持久化对象。这些是“将python对象写入文件”的奇特名称。
Python默认包含3个序列化模块,您可以使用它们来实现您的目标。他们是:泡菜,搁架和json。每个都有自己的特点,你必须使用的是更适合你的项目。您应该检查每个模块文档以获得更多信息。
如果你的数据只能通过python代码访问,你可以使用shelve,这是一个例子:
import shelve
my_dict = {"foo":"bar"}
# file to be used
shelf = shelve.open("filename.shlf")
# serializing
shelf["my_dict"] = my_dict
shelf.close() # you must close the shelve file!!!
要检索您可以执行的数据:
import shelve
shelf = shelve.open("filename.shlf") # the same filename that you used before, please
my_dict = shelf["my_dict"]
shelf.close()
看到你可以像处理字典一样处理搁置物体。
答案 3 :(得分:2)
为了完整起见,我还添加了json.dumps()
方法:
with open('outputfile_2', 'w') as file:
file.write(json.dumps(logic_steps, indent=4))
查看json.dump()
与json.dumps()