Ich habe eine 1,7 GB JSON-Datei, wenn ich versuche, mit json.load () zu öffnen, dann gibt es Speicherfehler, Wie könnte die JSON-Datei in Python lesen?
Meine JSON-Datei ist ein großes Array von Objekten, die bestimmte Schlüssel enthalten.
EDIT: Nun, wenn es nur ein großes Array von Objekten ist und die Struktur von Objekten vorher bekannt ist, dann brauchen wir keine Werkzeuge zu verwenden, die wir Zeile für Zeile lesen könnten. Eine Zeile enthält nur ein Element des Arrays. Mir ist aufgefallen, dass json-Dateien so gespeichert sind, für mich funktionierte es nur so.
%Vor%Sie möchten einen inkrementellen JSON-Parser wie yajl und eine seiner Python-Bindungen. Ein inkrementeller Parser liest so wenig wie möglich von der Eingabe und ruft einen Callback auf, wenn etwas Bedeutungsvolles dekodiert wird. Zum Beispiel, um nur Zahlen aus einer großen JSON-Datei zu ziehen:
%Vor%Weitere Informationen finden Sie Ссылка .
Ich habe einen weiteren Python-Wrapper in der Bibliothek yajl gefunden, der ijson ist.
Es funktioniert besser für mich als yajl-py aus folgenden Gründen:
Ich fand yajl (daher ijson) viel langsamer als das Modul json
, wenn von einer lokalen Festplatte auf eine große Datendatei zugegriffen wurde. Hier ist ein Modul, das behauptet, besser zu sein als yajl / ijson (immer noch langsamer als json
), wenn es mit Cython verwendet wird:
Der Autor weist darauf hin, dass die Leistung möglicherweise besser ist als json
, wenn die Datei über das Netzwerk empfangen wird, da ein inkrementeller Parser früher mit der Analyse beginnen kann.