解压缩巨大的 json gzip 文件导致 python 中的内存错误

decompressing huge json gzip file causing memory error in python

我遇到了以下问题。 我正在使用低内存(1 GB)的小型机器。 我的程序从 url 下载了一个巨大的 gzip 文件。我需要将它解压缩到 dict 我确定该文件是 json 格式。 我的问题是,在我 运行 以下命令之后,我得到了 内存错误 :

data = zlib.decompress(url, 16 + zlib.MAX_WBITS).decode('utf8')
results_list.append(json.loads(data ))

现在对于小文件这工作正常,但对于大文件我得到了错误。 我的直觉告诉我应该将文件分成块,但是因为我期待一个 json 文件,所以我无法将块恢复到 json (因为每个部分都不是有效的 json 字符串).

我该怎么办?

非常感谢!

使用z=zlib.decompressobj()创建一个解压缩对象,然后执行z.decompress(some_compressed_data, max),这将return不超过max字节的未压缩数据。然后您再次调用 z.decompress(z.unconsumed_tail, max) 直到 some_compressed_data 的其余部分被消耗,然后向其提供更多压缩数据。

然后您将需要能够一次处理一个块的结果未压缩数据。