Die Speicherung von Python-dictionaries
Ich bin verwendet, um die Erhebung von Daten in und aus Python mit .csv-Dateien, aber es gibt offensichtliche Herausforderungen für diese. Jede Beratung über einfache Möglichkeiten zum speichern eines Wörterbuchs (oder Sätze von Wörterbuch) in einem json-oder pck-Datei? Zum Beispiel:
data = {}
data ['key1'] = "keyinfo"
data ['key2'] = "keyinfo2"
Ich würde gerne wissen, wie dieses zu retten, und dann laden Sie es wieder in.
- Haben Sie Lesen Sie die Dokumentation json oder Gurke - standard-Module?
- Siehe Speichern eines Wörterbuchs in eine Datei (alternative zu Gurke) in Python?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gurke sparen:
Sehen das pickle-Modul-Dokumentation für weitere Informationen über die
protocol
argument.Gurke laden:
JSON sparen:
Liefern zusätzliche Argumente wie
sort_keys
oderindent
um ein hübsches Ergebnis. Das argument sort_keys Sortieren die Tasten alphabetisch und Einzug wird Rücken deine Daten-Struktur mitindent=N
Räume.JSON laden:
pickle.dump
auch. Wenn Sie die Datei nicht brauchen, um menschlich-lesbare dann es kann die Dinge beschleunigen eine Menge.json
Bibliothek erzeugt text - (Typstr
) Daten, also die Dateien sollten nicht geöffnet werden im Binär-Modus.json.dump(data, fp, sort_keys=True, indent=4)
. Mehr Infos finden Sie hierpickle.dump(data, fp, protocol=pickle.HIGHEST_PROTOCOL)
pickle
vsjson
?json
ist eine lesbare Datei anstelle von einem byte-stream, Größe der resultierenden Datei, etc?import pickle
Minimal-Beispiel, das direkte schreiben in eine Datei:
oder sicher öffnen /schließen:
Wenn Sie möchten, speichern Sie es in eine Zeichenfolge anstelle einer Datei:
Siehe auch speeded-up-Paket ujson.
https://pypi.python.org/pypi/ujson
In eine Datei schreiben:
Aus einer Datei zu Lesen:
myfile
ist das file-Objekt für die Datei, die Sie gespeichert, die in dict.json.dump(myfile)
undjson.load(myfile)
Wenn Sie nach der Serialisierung aber nicht brauchen, die Daten in andere Programme, die ich dringend empfehlen, die
shelve
Modul. Betrachten Sie es als ein persistentes Wörterbuch.json
bequemer ist.shelve
ist nur besser für den Zugriff auf einen Schlüssel gleichzeitig.Wenn Sie möchten, eine alternative zu
pickle
oderjson
verwenden, können Sieklepto
.Mit
klepto
, wenn Sie verwendet hatteserialized=True
, würde das Wörterbuch geschrieben worden zumemo.pkl
als eine eingelegte Wörterbuch statt mit klaren text.Erhalten Sie
klepto
hier: https://github.com/uqfoundation/kleptodill
ist wahrscheinlich eine bessere Wahl für Beizen dannpickle
selbst, alsdill
serialisieren können fast alles in python.klepto
auch verwenden kanndill
.Erhalten Sie
dill
hier: https://github.com/uqfoundation/dillZusätzliche mumbo-jumbo auf die ersten paar Zeilen sind, weil
klepto
werden kann, konfiguriert zum speichern von Wörterbüchern, um eine Datei, ein directory-Kontext oder in einer SQL-Datenbank. Die API ist die gleiche, für was auch immer Sie wählen Sie als backend-Archiv. Es gibt Ihnen eine "archivierbare" Wörterbuch mit, die Sie verwenden könnenload
unddump
Interaktion mit dem Archiv.Dies ist ein altes Thema, aber der Vollständigkeit halber, sollten wir auch ConfigParser und configparser, die Teil der standard-Bibliothek von Python 2 und 3, beziehungsweise. Dieses Modul liest und schreibt eine config - /ini-Datei und (zumindest in Python 3) verhält sich in vielerlei Hinsicht wie ein Wörterbuch. Es hat den zusätzlichen Vorteil, dass Sie speichern können mehrere Wörterbücher in separate Abschnitte der config - /ini-Datei und rufen Sie ab. Süß!
Python 2.7.x Beispiel.
Python 3.X Beispiel.
Ausgabe der Konsole
Inhalt der config.ini
Wenn Sie speichern, um eine json-Datei, die beste und einfachste Weg, dies zu tun ist: