Eventuali duplicati:
Is there a memory efficient and fast way to load big json files in python?lettura piuttosto grandi file JSON in Python
così ho alcuni piuttosto grandi file JSON codificato. Il più piccolo è 300 MB, ma questo è di gran lunga il più piccolo. Il resto sono più GB, ovunque da circa 2 GB a 10 GB +.
Quindi mi sembra di esaurire la memoria quando si tenta di caricare il file con Python. Al momento sto facendo alcuni test per vedere quanto tempo ci vorrà per gestire questa roba per vedere dove andare da qui. Ecco il codice che sto usando per prova:
from datetime import datetime
import json
print datetime.now()
f = open('file.json', 'r')
json.load(f)
f.close()
print datetime.now()
Non troppo sorprendentemente, Python mi dà un MemoryError. Sembra che json.load() chiami json.loads (f.read()), che sta provando a scaricare prima l'intero file in memoria, il che chiaramente non funzionerà.
Qualsiasi modo per risolvere questo in modo pulito?
So che questo è vecchio, ma non penso che questo sia un duplicato. Mentre la risposta è la stessa, la domanda è diversa. Nel "duplicato", la domanda è come leggere file di grandi dimensioni in modo efficiente, mentre questa domanda riguarda i file che non si adattano nemmeno alla memoria. L'efficienza non è richiesta.
Simile se non la stessa domanda: http://stackoverflow.com/questions/2400643/is-there-a-memory-efficient-and-fast-way-to-load-big-json-files-in- python – tskuzzy
Il problema è che se il file JSON è una lista gigante (per esempio), quindi analizzarlo in Python non avrebbe molto senso senza farlo tutto in una volta. Immagino che la cosa migliore da fare sia trovare un modulo che gestisca JSON come SAX e fornisca eventi per l'avvio di array e roba, piuttosto che fornire oggetti. Sfortunatamente, questo non esiste nella libreria standard. –
Beh, mi piacerebbe leggerlo tutto in una volta. Uno dei miei potenziali piani è quello di esaminarlo una volta e inserire tutto in un database in modo che possa accedervi in modo più efficiente. –