在Python中读取相当大的json文件

2024-03-29 10:35:43 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Is there a memory efficient and fast way to load big json files in python?

所以我有一些相当大的json编码文件。最小的是300MB,但这是目前为止最小的。其余的是多GB,从大约2GB到10GB+。

所以当我试图用Python加载文件时,似乎内存不足。我现在正在做一些测试,看看处理这些东西大概要花多长时间,看看从这里到哪里去。下面是我用来测试的代码:

from datetime import datetime
import json

print datetime.now()

f = open('file.json', 'r')
json.load(f)
f.close()

print datetime.now()

不太奇怪,Python给了我一个MemoryError。似乎json.load()调用了json.loads(f.read()),后者试图先将整个文件转储到内存中,这显然行不通。

我有什么办法可以彻底解决这个问题吗?

我知道这是旧的,但我不认为这是复制品。虽然答案是一样的,但问题是不同的。在“复制”中,问题是如何高效地读取大文件,而这个问题处理的是根本不适合内存的文件。不需要效率。


Tags: and文件内存importjsondatetimeisload
1条回答
网友
1楼 · 发布于 2024-03-29 10:35:43

这里的问题是,JSON作为一种格式,通常会被完全解析,然后在内存中处理,对于如此大量的数据来说,这显然是个问题。

解决这个问题的方法是将数据作为文件的流读取部分使用,然后使用它,然后重复。

最好的选择似乎是使用ijson这样的模块,该模块将使用JSON作为流,而不是块文件。

编辑:也值得一看-kashif's comment关于^{}Henrik Heino's comment关于^{}

相关问题 更多 >