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

可能重复:
有没有一种高效,快速的方式来加载python中的大json文件?

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

所以当我尝试使用Python加载文件时,似乎内存不足。 我目前正在进行一些testing,看看处理这些事情要花多长时间才能看到从这里走到哪里。 这是我用来testing的代码:

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()),它试图将整个文件转储到内存中,这显然是不会工作。

任何方式我可以干净地解决这个问题?

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

最好的select似乎是使用类似ijson的东西 – 一个模块,将与JSON作为一个stream,而不是一个块文件。

编辑:也值得一看 – kashif关于json-streamer 的评论 。