保存字典来腌制或写入文件?

时间:2017-10-02 12:13:09

标签: python pickle

我有一个Python脚本,它返回一个dict,我想存储在一个更大的项目中使用的地方(脚本运行缓慢,所以我不想只是每次我想要字典时导入脚本) 。

字典很小所以我看到两个选项。我可以:

  1. 将字典保存到pickle文件
  2. 将dict作为文字写入新的.py文件,如下所示:

    my_dict = slow_func()
    with open('stored_dict.py', 'w') as py_file:
        file_contents = 'stored_dict = ' + str(my_dict)
        py_file.write(my_dict)
    

    然后我可以使用from stored_dict import stored_dict

  3. 访问dict文字

    我应该选择其中一种选择吗?

2 个答案:

答案 0 :(得分:4)

Python dict的实现方式与json类似。您可以使用json模块将dict转储到文件中,然后轻松加载:

d = {1: 'a', 2: 'b', 3: 'c'}

import json

json.dump(d, file(r'C:\temp.txt', 'w'))

new_d = json.load(file(r'C:\temp.txt'))
>>> new_d
{u'1': u'a', u'3': u'c', u'2': u'b'}

答案 1 :(得分:3)

根据我的个人经验,我建议使用JSON:

  • 你想要一个人类可读的文件,
  • 跨多种技术兼容的文件类型,没有太多的实施开销。
  • 一个易于编辑的文件(因为它可以只是一个文本文件)。

我建议使用Pickle if:

  • 项目的大部分内容都是用python编写的。
  • 字典可能会变得非常大/复杂或者变成更大的类。
  • 需要非人类可读文件。
  • 在不事先了解其构造的情况下难以编辑的文件。

根据您在问题中触及的情况,JSON将是更有益的选择。