如何将字典列表保存到文件中?

时间:2014-09-11 02:19:28

标签: python list file dictionary

我有一个词典列表。有时,我想更改并保存其中一个词典,以便在重新启动脚本时使用新消息。现在,我通过修改脚本并重新运行来进行更改。我想把它从脚本中拉出来并将字典列表放到某种配置文件中。

我找到了关于如何将列表写入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"
    },
]

4 个答案:

答案 0 :(得分:25)

前提是该对象只包含JSON可以处理的对象(liststuplesstringsdictsnumbersNoneTrueFalse),您可以将其转储为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()

之间的区别here