Python:如何将列表写入文件,然后稍后将其拉回内存(dict表示为字符串转换为dict)?

标签 python pickle

更具体的欺骗 875228—Simple data storing in Python .

我有一个相当大的字典(6 GB),我需要对其进行一些处理。我正在尝试几种文档聚类方法,因此我需要一次将整个内容保存在内存中。我有其他函数可以在这些数据上运行,但内容不会改变。

目前,每当我想到新函数时,我都必须编写它们,然后重新生成 dict。我正在寻找一种将这个字典写入文件的方法,这样我就可以将它加载到内存中,而不是重新计算它的所有值。

为了过度简化它看起来像这样的东西: {((('word','list'),(1,2),(1,3)),(...)):0.0, ....}

我觉得 python 一定有比我更好的方法循环遍历一些字符串来寻找 : 和 ( 试图将它解析成字典。

最佳答案

为什么不使用 python pickle ? Python 有一个很棒的序列化模块,称为 pickle,它非常易于使用。

import cPickle
cPickle.dump(obj, open('save.p', 'wb')) 
obj = cPickle.load(open('save.p', 'rb'))

pickle 有两个缺点:

  • 它不能防止错误或 恶意构造的数据。绝不 unpickle 从接收到的数据 不受信任或未经身份验证的来源。
  • 格式不可读。

如果您使用的是 python 2.6,则有一个名为 json 的内置模块.使用起来就像 pickle 一样简单:

import json
encoded = json.dumps(obj)
obj = json.loads(encoded)

Json 格式是人类可读的,与 python 中的字典字符串表示非常相似。并且没有任何像 pickle 这样的安全问题。但可能比 cPickle 慢。

关于Python:如何将列表写入文件,然后稍后将其拉回内存(dict表示为字符串转换为dict)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/890485/

相关文章:

python - 如何在 python 中的 pickle.load() 之后关闭文件

python - Python中Pickle的MemoryError

python - python 中的 Pickle 队列对象

python - 在PYTHON中保存小于64位的浮点变量

python - 在 scrapy 中使用登录表单

python - 保留 Pandas 中具有百分比重叠范围的行

python - 从 Python 中的多个线程中提取

python - 从可能使用 session ID 的安全 URL 中抓取页面

python - 使用 Airflow 迁移大型表

python - 非常奇怪的 python NameError