读取大型json文件-更新?

wwtsj6pe  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(155)

我有一个很大的json文件,我很难在python中阅读和使用它。看起来我可以运行json.loads(),但是过了一段时间就崩溃了。
有两个问题基本上是同一件事:
Reading rather large JSON files
Is there a memory efficient and fast way to load big JSON files?
但是这些问题是2010年和2012年的,所以我想知道是否有一种更新/更好/更快的方法来做事情?
我的文件格式是:

import json

f = open('../Data/response.json')
data = json.load(f)
dict_keys(['item', 'version'])

# Path to data : data['item']

谢谢

zdwk9cvp

zdwk9cvp1#

Python的json函数的问题在于它会将整个文件加载到内存中。这意味着它的速度非常快,但如果文件很大,则需要更多的内存(RAM)。如果你有一个大的JSON文件,这可能是一个问题。解决方案是一次读取每个对象。
一种值得探索的特殊文件类型(或者至少是关于它的想法)是JSONL。每行表示一个单独的JSON对象。使用这种格式,您可以将一行读入内存,对其执行某些操作,然后继续下一行。每一次,你都要把这个对象存储到内存中,就像整个文件内容一样。
另一个解决方案是(我知道,这是我自己的喇叭一点),它检查出https://pypi.org/project/json-lineage/作为一个可能的解决方案。
简而言之,它面向支持较大的文件,您希望一次将一个对象加载到内存中并一次处理一个文件。
这里有一个使用指南,可以为你做的伎俩:

from json_lineage import load

jsonl_iter = load("path/to/file.json")

for obj in jsonl_iter:
    do_something(obj)

相关问题