/ / como posso acessar de forma confiável um único par de valores-chave de um arquivo JSON que é muito grande para carregar na memória? - python, python-3.x

Como posso acessar de forma confiável um único par de valores-chave a partir de um arquivo JSON que seja grande demais para ser carregado na memória? - python, python-3.x

Eu estou tentando recuperar os nomes das pessoas do meu arquivo. O tamanho do arquivo é 201GB

import json

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

Sempre que tento executar este programa no windows, me deparo com um erro de memória, que diz memória insuficiente.

Existe uma maneira confiável de analisar uma única chave, par de valores sem carregar o arquivo inteiro? Eu li o arquivo em pedaços, mas não sei como começar.

Aqui é amostra: test.json

Cada linha é separada pela nova linha. Espero que isto ajude.

Respostas:

1 para resposta № 1

Você pode querer dar ijson uma tentativa : https://pypi.python.org/pypi/ijson


0 para resposta № 2

Infelizmente não há garantia de que cadalinha de um arquivo JSON fará algum sentido para o analisador por conta própria. Temo que o JSON nunca tenha sido destinado à troca de dados em vários gigabytes, precisamente porque cada arquivo JSON contém uma estrutura de dados integral. No mundo XML, as pessoas têm escrito analisadores orientados a eventos incrementais (baseados em SAX). tal biblioteca para JSON.