Seite 1 von 1
Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 13:47
von theotter
Ich habe eine Liste, die ich im Verlaufe des Programmablaufes ändern will.
Das Programm soll dann die neue Liste verwenden.
Wie kann man die veränderte Liste abspeichern??
Beispielliste: a = [1,3,5,7]
Danke im Vorraus!
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 14:05
von cofi
theotter hat geschrieben:Ich habe eine Liste, die ich im Verlaufe des Programmablaufes ändern will.
Das Programm soll dann die neue Liste verwenden.
Was meinst du mit "neue Liste verwenden"? Kanonische Antwort: Indem du sie an den entsprechenden Stellen übergibst.
theotter hat geschrieben:Wie kann man die veränderte Liste abspeichern??
Was meinst du mit "abspeichern"? Persistent auf der Festplatte? Kopien erzeugen?
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 17:35
von theotter
Ich will die Liste in einer anderen Datei speichern(sie soll in dieser Datei sein, also Festplatte denke ich mal) und später daraus wieder laden.
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 17:37
von BlackJack
@theotter: Schau Dir mal das `json`-Modul an.
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 17:43
von theotter
Danke, aber ich bin noch nen absoluter Neuling und habe nicht ganz verstanden was Python mir mit der Hilfefunktion über das json Modul sagen wollte.
Könntest du mit nen kleines Bsp. geben damit ich es verstehe??
Danke
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 17:46
von Dav1d
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 17:58
von theotter
Ok, es hat geklappt, das ich etwas einspeichere, aber das sieht mir nicht ganz wie ne liste aus bzw. weiß ich nich wie ist das wieder in die "normale" Listenform bekomme.
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 18:00
von ms4py
theotter hat geschrieben:Ok, es hat geklappt, das ich etwas einspeichere, aber das sieht mir nicht ganz wie ne liste aus bzw. weiß ich nich wie ist das wieder in die "normale" Listenform bekomme.
Vielleicht erzählst du uns, wie du jetzt vorgehst...
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 18:00
von theotter
import cPickle as cp
a = [1,2]
f = open("test.py","wb")
cp.dump(a,f)
f.close()
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 18:01
von theotter
Das wird in der Datei abgespeichert:
(lp1
I1
aI2
a.
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 18:03
von cofi
Eben wieder mit pickle, in dem Fall `pickle.load`.
Edit: Nicht vergessen die Datei im Binaermodus zu oeffnen.
Und wenn du eine Menschen-lesbare version haben willst, solltest du JSON benutzen.
P.S. Wenn man mit `c*`-Modulen arbeitet, sollte man so vorgehen:
Code: Alles auswählen
try:
import cPickle as pickle
except ImportError:
import pickle
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 18:08
von theotter
Danke!
Es klappt wunderbar!
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 18:24
von theotter
Wie lädt man mit Json?
Hier der Code:
import json
f = open("test.py","wb")
print json.loads("test.py","wb")
f.close()
Es kommt bloß immer einer Fehlermeldung.
In diese Datei wurde die Liste eingespeichert.
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 18:28
von Hyperion
Lies Dir doch mal die Doku
genau durch! Bei pickle hast Du ja auch
load verwendet, nicht
loads!
Im übrigen würde ich bei JSON die Datei nicht im Binärmodus öffnen. JSON ist ja ein reines Textformat.
Außerdem öffnte man Dateien mit Hilfe des with-Statement:
Code: Alles auswählen
with open(..) as infile:
# mache irgend was mit infile
Damit wird garantiert, dass die Datei auf jeden Fall wieder geschlossen wird, egal, ob eine Exception auftritt o.ä.
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 19:09
von theotter
So ich habe es jetzt weiter versucht und bin mit der Doku, aufgrund der Fachbegriffe nicht ganz so zurecht gekommen.
Es kommt immer wieder die Fehlermeldung:
Traceback (most recent call last):
File "E:/Python26/Listenspeicherung.py", line 5, in <module>
with open(f) as infile:
TypeError: coercing to Unicode: need string or buffer, file found
Was heißt das bitte und viel wichtiger, wie kann man das lösen??
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 19:12
von theotter
Der jetzige Code:
import json
f = open("test.py","wb")
with open(f) as infile:
print json.load(f)
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 19:17
von EyDu
Hallo.
Vielleicht solltest du Google einfach mal nach "python with" fragen. Und eine Datei zum Schreiben zu öffnen und daraus zu lesen ist nicht die klügste Idee.
Das einzige was hilft: mal das Tutorial durcharbeiten.
Re: Wie speichert man Listen ab??
Verfasst: Dienstag 3. August 2010, 19:21
von Hyperion
theotter hat geschrieben:
Was heißt das bitte und viel wichtiger, wie kann man das lösen??
Indem mans ich entweder die Doku anguckt, welche Parameter die open()-Funktion erwartet, oder sich seinen eigenen Code (!) noch einmal anguckt oder aber genau die Fehlermeldung anguckt, die einem ja verrät, was die open()-Funktion als Parameter bekommen hat und was sie aber stattdessen erwartet!
Zudem:
Wir haben spezielle Code-tags hier im Forum, mit denen man Quelltext im Allgemeinen und Python sogar mit Syntax-Highlighting versehen kann.
Re: Wie speichert man Listen ab??
Verfasst: Mittwoch 4. August 2010, 14:41
von ms4py
`f` muss der Dateiname (inkl. Pfad) sein. Danach ist `infile` dein Datei-Objekt, das du zum Laden verwenden sollst.