Python 将dict保存到pickle还是写入文件?
我有一个Python脚本,它返回一个dict,我想把它存储在某个地方,以便在一个更大的项目中使用(脚本运行缓慢,所以我不想每次需要字典时都导入脚本) dict很小,所以我有两种选择。我可以:Python 将dict保存到pickle还是写入文件?,python,pickle,Python,Pickle,我有一个Python脚本,它返回一个dict,我想把它存储在某个地方,以便在一个更大的项目中使用(脚本运行缓慢,所以我不想每次需要字典时都导入脚本) dict很小,所以我有两种选择。我可以: 将dict保存到pickle文件 将dict作为文本写入新的.py文件,如下所示: my_dict = slow_func() with open('stored_dict.py', 'w') as py_file: file_contents = 'stored_dict = ' + str(my
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 storaged\u dict import storaged\u dict
我应该选择这些选项中的一个吗?Python dict的实现方式类似于
json
。您可以使用json
模块将dict转储到文件中,并轻松地将其加载回:
import json
d = {1: 'a', 2: 'b', 3: 'c'}
with open('C:\temp.txt', 'w') as file:
json.dump(d, file)
with open('C:\temp.txt', 'r') as file:
new_d = json.load(file)
>>> new_d
{u'1': u'a', u'3': u'c', u'2': u'b'}
根据我个人的经验,我建议在以下情况下使用JSON:
- 你想要一个可读的文件
- 一种跨多种技术兼容的文件类型,无需太多的实现开销李>
- 一个易于编辑的文件(因为它可以是一个简单的文本文件)
- 该项目的大部分内容将用python编写
- 词典可能变得非常大/复杂,或者被合并到一个更大的类中
- 需要非人类可读的文件
- 在事先不知道其结构的情况下很难编辑的文件
根据您在问题中遇到的情况,JSON将是更有益的选择。您可以将其转储到
JSON
文件,该文件看起来与dict相同。的可能重复也请参见:取决于该词典中包含的数据……感谢您的建议。我本来打算做pickle,但我知道这本字典仍然可以用纯文本阅读是很有价值的;因此,我选择使用Json。我的字典中有数据帧,我得到错误:TypeError:DataFrame类型的对象不是Json可序列化的