我有一个大的json文件。它的日志数据和我已将其压缩为bz2格式(myfile.json.bz2)。 bz2文件的大小是90MB。我搜索找到一个很好的解决方案或博客文章,解释有效解析压缩bz2 json文件,但无法找到任何。
由于文件太大而做的事情是不可能的。
with open('data.json') as data_file:
data = json.load(data_file)
最好的方法是什么?
经过一番挖掘后,我发现有一个python包来读取bz2
input_file = bz2.BZ2File(filename, 'r')
答案 0 :(得分:1)
在没有任何其他建议或现有代码的情况下,我建议打开一个流并手动解析大括号和括号(分别为{
和[
),直到您拥有完整的对象{{1}并在其上运行反序列化。这将允许您在利用现有JSON库的同时对JSON进行分块。
这不是我通常会推荐的解决方案,但如果现有的库不符合您的需求,它是我能想到的最快,最可靠的解决方案。
答案 1 :(得分:0)
如果有人正在寻找一种方法来解析bz2中压缩的wikidata json转储,则下面是一段代码:
import bz2
import json
f = bz2.BZ2File("latest-all.json.bz2", "r")
next(f) # skip the first line
for line in f:
print(json.loads(line[:-2]))