2016-04-22 38 views
-1

我的代码通常运行几天,并将Python中的字符串和浮点变量作为中间结果进行处理。我不能将所有中间值附加到Python列表中,并在运行后一次性使用pickle等将所有输出保存到物理文件中。这是因为,如果出现中断,我可能会丢失迄今收集的所有数据。在磁盘中保存多个字典和变量

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

+0

您可以附加咸菜一个文件,然后读取它们一个接一个,直到你选串得到'EOFError',就像这个[code](https://github.com/ciupicri/bac-parser/blob/f00d9562f9a8f4f9bf475fb3773db34ee12021e5/pickle2csv.py#L38)。 –

回答

0

这也取决于你的需求

  1. 是否追加数据需要参考前一个

    • 如果是的话,你可以不被可能的文件处理程序错误承担数据丢失的原因,你可能会考虑到保持数据在SQLite数据库,Python带有它
    • 如果没有,你可以只是简单创建新的JSON文件,问题解决了,把它们合并使用泡菜

      • 我也发现了一些StringIO的泡菜文件,以及刚才提到的需要处理的文件进行写,不知道什么时候需要
    • 它是否支持“追加”,是否只是直接追加二进制数据/使用python文件处理程序追加或系统>>

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) 
+0

这意味着我将所有的字典编译成单个列表,然后将其写入JSON文件,这是我无法承受的。是否有可能将多个JSON对象连续附加到单个文件中,然后解析此文件以将所有JSON对象重新加载到Python列表中? – user1050648