Seite 1 von 1

Wie speichert man am besten Listen, Dictionaries...?

Verfasst: Samstag 15. März 2014, 10:53
von ll9
Hallo,

ich bin mir momentan noch nicht sicher, wie ich den Dictionaries, Listen und Variablen am besten speicher soll. Ich würde das ganze gespeicherte Zeug am liebsten in einer Datei haben. Ich habe auch erst ein Programm geschrieben, was diese Funktionen benötigt. Dort lies ich einfach immer zum Schluss des Programms sämtliche Listen, Dictionaries die ich brauchte in ein anderes Dokument schreiben. Indem ich das Dokument dann importiert habe, hatte ich wieder Zugriff auf die Listen usw. Nun frage ich mich aber, ob das wirklich der beste Weg war. Ich hab mich jetzt vor kurzem auch an pickle versucht, aber kann man bei Pickle nicht jeweils nur eine Liste/ Dictionary/ Variable pro Dokument speichern? Ich kenn mich da noch nicht ganz so aus. Wie speichert man denn am sinnvollsten/ effizientesten? Könnt ihr mir dafür vielleicht einen Beispielcode geben?

Danke schonmal im voraus.

Re: Wie speichert man am besten Listen, Dictionaries...?

Verfasst: Samstag 15. März 2014, 11:06
von Sirius3
@ll9: da Pickle ein Filehandle erwartet, kannst Du ganz einfach mehrere Objekte mit dem selben Filehandle pickeln und entpickeln, oder Du nimmst eine Liste/Dictionary mit allen Objekten die Du speichern willst. Was das richtige Dateiformat für Deine Daten ist, kommt auf die Anwendung an.

Re: Wie speichert man am besten Listen, Dictionaries...?

Verfasst: Samstag 15. März 2014, 11:10
von BlackJack
@ll9: Für die meisten Grunddatentypen eignet sich JSON über das `json`-Modul aus der Standardbibliothek ganz gut. Vorteil gegenüber `pickle`: Das Format kann von sehr vielen Programmiersprachen genutzt werden und nicht nur von Python.

Re: Wie speichert man am besten Listen, Dictionaries...?

Verfasst: Samstag 15. März 2014, 12:15
von darktrym
@BJ: Setzt das nicht voraus dass alle sich darauf geeinigt haben bspw. utf8 zu verwenden? Oder speichert das irgendwo die Kodierung?

Re: Wie speichert man am besten Listen, Dictionaries...?

Verfasst: Samstag 15. März 2014, 12:30
von BlackJack
@darktrym: Das RFC sagt „The default encoding is UTF-8.” und mir ist bisher auch noch keine andere Kodierung begegnet. Einige Generatoren beschränken sich auch auf ASCII und Escapen grundsätzlich alles was ausserhalb von ASCII liegt.

Re: Wie speichert man am besten Listen, Dictionaries...?

Verfasst: Samstag 15. März 2014, 19:45
von ll9
@BlackJack

ich hab jetzt mal ein bisschen was über JSON durchgelesen und JSON scheint wohl recht viel zum Encodieren und Decodieren verwendet zu werden. Das was für mich jetzt interessant war, sah ein bisschen ähnlich aus wie in Pickle. Kannst du mir vielleicht kurz das Prinzip erläutern, wie man in JSON am besten etwas abspeichert und dann darauf wieder zugreift (vielleicht anhand von einen Beispiel?)? Vor allem, wenn man mehrere Listen oder Dictionaries abspeichert und wieder aufrufen will ist mir das Prinzip dahinter noch nicht ganz flüssig.

Ansonsten danke für den guten und schnellen support.

Re: Wie speichert man am besten Listen, Dictionaries...?

Verfasst: Samstag 15. März 2014, 20:45
von darktrym

Re: Wie speichert man am besten Listen, Dictionaries...?

Verfasst: Sonntag 16. März 2014, 11:12
von ll9
Danke, aber auf die offiziele Python dokumentation hät ich auch selber kommen können. Ich finde dort recht wenig, was konkret auf meine Problematik eingeht und für Anfänger finde ich das auch etwas zu schwierig einfach so dahinter zu kommen. Ich zeig euch jetzt mal kurz ein beispiel meinerseits.

Code: Alles auswählen

import json

list = [0, 1, 2, 3, 4]
list2 = [5, 6, 7, 8, 9]

with open("test.txt", "wb") as file:
    json.dump(list, file)
    json.dump(list2, file)
jetzt steht in dem Textdokument das hier drin:

Code: Alles auswählen

[0, 1, 2, 3, 4][5, 6, 7, 8, 9]
Er hat list und list2 also dort reingeschrieben. Ist auch alles ohne Komma getrennt und lässt sich nicht mehr so leicht zuordnen. Wie kann ich denn mit json.load da auf die einzelnen Elemente geziehlt zugreifen?

Ich will einfach etwas innerhabl von einen Programm speichern können, das Programm beenden können und dann wieder zugriff darauf haben können. Und das mit mehreren Listen, Dictionaries und auch Variablen. Kann mir jemand vielleicht erklären, wie das geht?

Re: Wie speichert man am besten Listen, Dictionaries...?

Verfasst: Sonntag 16. März 2014, 11:14
von Sirius3
@ll9: Du packst alles was Du speichern willst in eine Liste:

Code: Alles auswählen

import json
 
list = [0, 1, 2, 3, 4]
list2 = [5, 6, 7, 8, 9]
 
with open("test.txt", "wb") as file:
    json.dump((list, list2), file)

with open("test.txt", "rb") as file:
    (list, list2) = json.load(file)