如何从JSON文件中可靠地访问单个键值对,该文件太大而无法加载到内存中?

时间:2017-04-07 13:53:01

标签: python python-3.x

我正在尝试从我的文件中检索人员的姓名。文件大小为201GB

import json

with open("D:/dns.json", "r") as fh:
    for l in fh:
        d = json.loads(l)
        print(d["name"])

每当我尝试在Windows上运行此程序时,都会遇到Memory错误,该错误表示内存不足。

是否有一种可靠的方法来解析单个键值对而不加载整个文件?我已经记住了大块的文件,但我不知道如何开始。

以下是示例:test.json

每一行都被换行分隔。希望这会有所帮助。

2 个答案:

答案 0 :(得分:1)

您可能需要尝试ijsonhttps://pypi.python.org/pypi/ijson

答案 1 :(得分:0)

不幸的是,不能保证JSON文件的每一行都对解析器本身有任何意义。我担心JSON从未打算用于数千兆字节的数据交换,正是因为每个JSON文件都包含一个完整的数据结构。在XML世界中,人们编写了增量事件驱动(基于SAX)的解析器。我不知道这样的JSON库。