在磁盘中保存多个字典和变量

saving multiple dicts and variables in disk

我的代码通常 运行 持续数天,并以 Python 指令和浮点变量的形式输出中间结果。我负担不起将所有中间值附加到 Python 列表并在 运行 之后使用 pickle 等一次性将所有输出保存到物理文件。这是因为,万一出现中断,我可能会丢失到目前为止收集的所有数据。

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

使用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. 追加的数据是否需要引用之前的数据

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

    • 我确实在 pickle 文档中发现了一些 StringIO,刚才提到需要文件处理程序来写入,不确定它是否支持 'append',是否直接使用 python 附加二进制数据/选择的字符串文件处理程序追加或系统 >>