C'era un duplicato a questa domanda che aveva una risposta migliore. Vedere https://stackoverflow.com/a/10382359/1623645, che suggerisce ijson.
Aggiornamento:
ho provato, e ijson è quello di JSON ciò SAX è quello di XML. Per esempio, si può fare questo:?
import ijson
for prefix, the_type, value in ijson.parse(open(json_file_name)):
print prefix, the_type, value
dove prefix
è un indice separata da punti nella struttura di JSON (cosa succede se i vostri nomi chiave hanno punti in loro Credo che sarebbe un male per Javascript, anche. ..), theType
descrive un evento simile a SAX, uno di 'null', 'boolean', 'number', 'string', 'map_key', 'start_map', 'end_map', 'start_array', 'end_array'
e value
è il valore dell'oggetto o None
se the_type
è un evento come l'inizio/fine di una mappa/matrice.
Il progetto ha alcune docstrings, ma non abbastanza documentazione globale. Ho dovuto scavare nello ijson/common.py
per trovare quello che stavo cercando.
fonte
2013-06-26 17:01:03
Il problema che sto affrontando è che ho 195 file come quello da elaborare e sembra che il garbage collector di Python non stia facendo un buon lavoro. Dopo il decimo file, esaurisco la memoria. Sto usando Python 2.6.4 su Windows 7. Ho memoria RAM da 3 GB – duduklein
Perché è necessario caricarli tutti in memoria in una volta? Sembra inefficace. –
Se hai problemi con il caricamento di 500mb xml, vtd-xml è un modo per andare, la questione è se ha senso fare vtd-json ... –