追加到 json 文件中的列表的最佳和最快的方法是什么?

时间:2021-05-15 10:00:58

标签: python json list

所以,我有一个 .json 文件,它是一个 list 字典。目前,我只是通过变量中的字典列表来更新文件,附加该列表并覆盖现有的 .json 文件。但是,将来,列表的大小可能会非常大,以至于写入文件可能需要很长时间,甚至比变量可以容纳的还要大。因此,我希望能够将 .json 附加到我的列表中,最好是在顶部。

目前,这是我的代码:

import json

new = [{'a': '1'}, {'b': '2'}, {'c': '3'}]
now = [{'d': '4'}, {'e': '5'}, {'f': '6'}]

for i in range(len(new)):
     now.insert(i, new[i])

##now = [{'a': '1'}, {'b': '2'}, {'c': '3'}, {'d': '4'}, {'e': '5'}, {'f': '6'}]

with open('myfile.json', 'w') as f:
     json.dump(now, f)

我想这样做,但不必将列表存储在 now 中,因为它可能会变得太大,并且不必每次都重写整个文件,因为这可能会花费太多时间。

1 个答案:

答案 0 :(得分:0)

如果不以简单的方式读取文件,就不可能添加到列表中。

如果您保证文件始终包含有效的 JSON。然后,假设您有权访问 sed cmd,也许您可​​以运行 sed 命令在正确的位置添加项目。

import subprocess
import json

new = [{'a': '1'}, {'b': '2'}, {'c': '3'}]

# myfile.json contents => [{"d": "4"}, {"e": "5"}, {"f": "6"}]

try:
    subprocess.run(['sed', '-i', '-e', 's/\[/\[{}, /'.format(json.dumps(new)[1:-1]), 'myfile.json'])
except Exception as e:
    print(e)

这会将条目添加到列表的开头。根据需要修改 sed 命令。此外,这仅在文件已包含非空 JSON 列表时才有效。但这些情况可以用一点逻辑来处理。

相关问题