/ / Czytanie raczej dużych plików json w Pythonie [duplicate] - python, json

Czytanie raczej dużych plików json w Pythonie [duplicate] - python, json

Możliwe duplikaty:
Czy istnieje pamięć i szybki sposób na załadowanie dużych plików json w pythonie?

Mam więc dość duże pliki zakodowane w jsonie. Najmniejszy to 300 MB, ale jest to zdecydowanie najmniejszy. Reszta to wiele GB, od około 2 GB do 10 GB +.

Wydaje mi się, że brakuje mi pamięci, gdy próbujęwczytaj plik za pomocą Pythona. Aktualnie przeprowadzam kilka testów, aby zobaczyć, jak długo potrwa zajmowanie się tymi rzeczami, aby zobaczyć, dokąd się udać. Oto kod, którego używam do testowania:

from datetime import datetime
import json

print datetime.now()

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

print datetime.now()

Nic dziwnego, Python daje miMemoryError. Wygląda na to, że json.load () wywołuje json.loads (f.read ()), który próbuje najpierw zrzucić cały plik do pamięci, co wyraźnie nie zadziała.

W jaki sposób mogę to rozwiązać?

Wiem, że to jest stare, ale nie sądzę, że to jestduplikować. Podczas gdy odpowiedź jest taka sama, pytanie jest inne. W "duplikacie" pojawia się pytanie, jak efektywnie odczytywać duże pliki, podczas gdy to pytanie dotyczy plików, które w ogóle nie pasują do pamięci, wydajność nie jest wymagana.

Odpowiedzi:

52 dla odpowiedzi № 1

Najlepszą opcją wydaje się być użycie czegoś podobnego ijson - moduł, który będzie pracował z JSONem jako strumieniem, a nie jako plik blokowy.

Edycja: Warto też zajrzeć - komentarz Kashifa o json-streamer.