gpt4 book ai didi

python - 是否可以将信息附加到 json 文件内的结构中,而无需先将其读入内存?

转载 作者:太空宇宙 更新时间:2023-11-03 18:47:26 27 4
gpt4 key购买 nike

我正在尝试将大量列表存储在 json 文件中。这些列表是从长时间运行的进程生成的,因此我想在可用时将新生成的信息添加到我的 json 文件中。

目前,为了扩展数据结构,我将 json 作为 Python 列表读入内存,将新数据附加到该列表,然后用新创建的列表覆盖 json 文件中的旧数据。

def update_json_file(new_data):
with open('mycoolfile.json', 'rb') as f:
jsondata = json.load(f)

jsondata.append(new_data)
with open('mycoolfile.json', 'wb') as f:
json.dump(jsondata, f)

还有比将所有内容读入内存更好的方法吗?当然,随着文件大小的增长,这将不再是一个可行的策略。有没有一种简单的方法来扩展 json 文件内部的结构?

最佳答案

是的,您可以,正如 zaquest 所说,您可以查找几乎文件的末尾并覆盖外部列表的最后一个“]”。以下内容展示了如何完成此操作:

import json
import os

def append_list(json_filename, new_data):
with open(json_filename, 'r+b') as f:
f.seek(-1, os.SEEK_END)
new_json = json.dumps(new_data)
f.write(', ' + new_json + ']')

# create a test file
lists = [
'This is the first list'.split(),
"and here's another.".split(),
[10, 2, 4],
]

with open('mycoolfile.json', 'wb') as f:
json.dump(lists, f)

append_list('mycoolfile.json', 'New data.'.split())

with open('mycoolfile.json', 'rb') as f:
jsondata = json.load(f)
print json.dumps(jsondata, indent=4)

输出:

[
[
"This",
"is",
"the",
"first",
"list"
],
[
"and",
"here's",
"another."
],
[
10,
2,
4
],
[
"New",
"data."
]
]

关于python - 是否可以将信息附加到 json 文件内的结构中,而无需先将其读入内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19193137/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com