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

时间:2012-04-30 10:36:35

标签: python json

  

可能重复:
  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()),它试图首先将整个文件转储到内存中,这显然不会起作用。

我能干净利落地解决这个问题吗?

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

1 个答案:

答案 0 :(得分:69)

最佳选项似乎是使用ijson之类的东西 - 一个可以将JSON用作流而不是块文件的模块。

修改:另外值得一看 - kashif's comment关于json-streamer