在磁盘

时间:2016-04-22 04:56:23

标签: python json pickle

我的代码通常运行几天,并以Python dicts和float变量的形式喷出中间结果。我无法将所有中间值附加到Python列表,并在运行后一次性使用pickle等将所有输出保存到物理文件。这是因为,如果中断,我可能会丢失到目前为止收集的所有数据。

所以我必须定期转储(并附加)多个dicts和其他变量。做这个的最好方式是什么 ?我已经查看了JSON(但不确定如何从单个文件中存储(以及稍后读取)多个JSON对象。我可以将我的数据附加到pickle文件吗?将这些数据保存在简单的文本文件或csv文件中将是我的最后一招。

2 个答案:

答案 0 :(得分:4)

使用json。这是保护的一个很好的变种,可以编辑文件:

import json

list_of_dict = [
    {'a': 1},
    {'b': 2}
]

with open('filename.json', 'w') as f:
    json.dump(list_of_dict, f, sort_keys=True, indent=4)

答案 1 :(得分:0)

这取决于您的要求

  1. 附加数据是否需要引用前一个数据

    • 如果是这样,并且由于可能的文件处理程序错误导致您无法承受数据丢失,您可能会考虑将数据保存在sqlite数据库中,python附带它
    • 如果没有,你可以简单地创建新的json文件,问题解决了,必要时合并它们
  2. 使用泡菜

    • 我确实在pickle文档中找到了一些StringIO,刚才提到需要文件处理程序进行写入,不确定它是否支持'append',是否直接使用python文件处理程序附加或系统>>直接附加二进制数据/拾取的字符串;
相关问题