Hallo,
ich habe folgendes vor:
stellen wir uns mal vor man gibt einem Programm mehrere Eingaben und schliesst es dann. Beim wieder öffnen soll dann das Programm auf einen Klick diese vorher eingebenen Eingaben anzeigen.. Und eventuell auch neue Eingabe dazu spiechern... Eine Art Archiv für Zahlen o.Ä....
Wie kann ich dieses Problem lösen?
Das mit dem Abspeichern is no prob, das kann ich!
nur wie gibt das Programm eben vorher abgespeicherte Dinge wieder?
(zB aus einer .txt Datei)
mfg skunkk90
Daten wieder laden und anzeigen?
Hallo,
wie wäre es hiermit?
Und zum Wiedergeben der Eingabe:
Du bekommst zwar eine Liste wieder, aber das kannst du mit dem Modul pickle beheben!
wie wäre es hiermit?
Code: Alles auswählen
x=raw_input('Geben Sie was ein:')
f=open('datei.txt', 'w')
f.write(x)
f.close
Code: Alles auswählen
y=open('datei.txt', 'r')
z=y.readlines()
print z
mfg
Thomas :-)
Thomas :-)
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich würds mit pickle speichern und mit unpickle wieder laden.skunkk90 hat geschrieben:Das mit dem Abspeichern is no prob, das kann ich!
nur wie gibt das Programm eben vorher abgespeicherte Dinge wieder?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
http://docs.python.org/lib/module-cPickle.html
Code: Alles auswählen
>>> import cPickle
>>> a = [1,2,3,4,5]
>>> a
[1,2,3,4,5]
>>> cPickle.dump(a, open("datei", "w"))
>>> del a
>>> a = cPickle.load(open("datei"))
>>> a
[1,2,3,4,5]
nur was ganz persönliches:
ich würde die immer in einen anderen ordner legen;
"datei.pickle" sieht nicht schön aus...
is aber reine geschmackssache...
ich würde die immer in einen anderen ordner legen;
"datei.pickle" sieht nicht schön aus...
is aber reine geschmackssache...
- skunkk90
- User
- Beiträge: 57
- Registriert: Donnerstag 1. Juni 2006, 20:38
- Wohnort: F:\Homeverzeichnis.zip
- Kontaktdaten:
so habe nun folgendes prob:
Er speichert jetzt zwar den Wert und öffnen tut er in durchaus auch, NUR ÜBERSCHREIBT ER DEN DAVORIGEN WIEDER...
Gerade das soll nicht passieren... er soll es sozusagen "protokollieren"...
Was muss ich machen, dass er es NICHT überschreibt, sondern 'dranhängt'?
mfg
Code: Alles auswählen
def arbeite():
a=killsEntry.get()
b=deathsEntry.get()
kills=float(a)
deaths=float(b)
kdsession= kills/deaths
cPickle.dump(kdsession, open("KD Career.txt","w"))
KDsession=str(kdsession)
sessionKD.config(text='('+KDsession+')')
def close():
hf.destroy()
def archiv():
fenster2=Toplevel(hf)
fenster2.title('KD Career')
frame2=Frame(fenster2,width=220,height=220)
frame2.pack()
def close2():
fenster2.destroy()
ausgabefeld=ScrolledText(frame2, width=31,height=13)
ausgabefeld.place(x=5,y=5)
close2=Button(frame2, text='Fenster schliessen', command=close2)
close2.place(x=60,y=190)
a = cPickle.load(open("KD Career.txt"))
b = str(a)
ausgabefeld.insert(END,b+'\n')
Gerade das soll nicht passieren... er soll es sozusagen "protokollieren"...
Was muss ich machen, dass er es NICHT überschreibt, sondern 'dranhängt'?
mfg
ebenso wie in der textdatei= den parameter "w" durch das "a" ersetzen!
das pickle-modul arbeitet im endeffekt genauso wie wenn du das in einer textdatei speicherst, nur dass es für dich handlicher und simpler ist;
außerdem schwerer auszulesen von außen...
(das ist in zeile 7 zu ändern)
das pickle-modul arbeitet im endeffekt genauso wie wenn du das in einer textdatei speicherst, nur dass es für dich handlicher und simpler ist;
außerdem schwerer auszulesen von außen...
(das ist in zeile 7 zu ändern)
Das ersetzen von 'w' duch 'a' hat nix mit dem speichern zu tun.
w öffnet die Datei einfach nur zum schreiben und überschreibt die Datei bei jedem neuen öffnen
a öffnet die Datei auch zum schreiben, aber fügt Text beim neuen öffnen einfach dazu!
Sicher das du nichts anderes geändert hast?
w öffnet die Datei einfach nur zum schreiben und überschreibt die Datei bei jedem neuen öffnen
a öffnet die Datei auch zum schreiben, aber fügt Text beim neuen öffnen einfach dazu!
Sicher das du nichts anderes geändert hast?
mfg
Thomas :-)
Thomas :-)
Auf jeden Fall sollte man pickle Dateien immer als Binärdateien öffnen sonst sind die nicht portabel.
- skunkk90
- User
- Beiträge: 57
- Registriert: Donnerstag 1. Juni 2006, 20:38
- Wohnort: F:\Homeverzeichnis.zip
- Kontaktdaten:
was heisst als binärdateien??BlackJack hat geschrieben:Auf jeden Fall sollte man pickle Dateien immer als Binärdateien öffnen sonst sind die nicht portabel.
ACH JA UND:
wenn ich das "w" durch ein "a" ersetze, dann öffnet er nur noch und schreibt gar nichst mehr (weder so noch überschreibt er etwas)...
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!skunkk90 hat geschrieben:was heisst als binärdateien??
http://docs.python.org/lib/built-in-funcs.html#l2h-25
http://docs.python.org/lib/bltin-file-o ... ml#l2h-235
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Python Master 47!Python Master 47 hat geschrieben:Das ersetzen von 'w' duch 'a' hat nix mit dem speichern zu tun.
w öffnet die Datei einfach nur zum schreiben und überschreibt die Datei bei jedem neuen öffnen
a öffnet die Datei auch zum schreiben, aber fügt Text beim neuen öffnen einfach dazu!
Und genau deshalb ist "a" für Pickle nicht verwendbar. Bitte probier deine Tipps doch ab und zu mal selber aus.
Ideal für Pickle ist "wb", damit es keine böse Überraschung durch Zeilenumbrüche innerhalb der gepickelten Datei gibt.
Also "wb" zum Schreiben und "rb" zum Lesen.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi skunkk90!skunkk90 hat geschrieben:ACH JA UND:
wenn ich das "w" durch ein "a" ersetze, dann öffnet er nur noch und schreibt gar nichst mehr (weder so noch überschreibt er etwas)...
Mit "a" wird die Datei immer größer. Allerdings wird immer nur der erste Pickle-Dump der Datei verwendet um die Daten zu rekonstruieren. Das macht "a" für Pickle ziemlich ungeeignet.
Code: Alles auswählen
>>> import pickle
>>> import StringIO
>>> f = StringIO.StringIO()
>>> d = {"Vorname": "Gerold"}
>>> pickle.dump(d, f)
>>> d = {"Vorname": "Bernhard"}
>>> pickle.dump(d, f)
>>> f.seek(0)
>>> f.read()
"(dp0\nS'Vorname'\np1\nS'Gerold'\np2\ns.(dp0\nS'Vorname'\np1\nS'Bernhard'\np2\ns."
>>> f.seek(0)
>>> x = pickle.load(f)
>>> x
{'Vorname': 'Gerold'}
>>>
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- skunkk90
- User
- Beiträge: 57
- Registriert: Donnerstag 1. Juni 2006, 20:38
- Wohnort: F:\Homeverzeichnis.zip
- Kontaktdaten:
wenn ich jetzt bei mir in zeile 7 das "w" durch ein"wb" ersetze dann überschreibt er aber wieder... ich glaube ich sollte dazu sagen, dass ich es in einem Scrolledtext öffnen will und anzeigen alssen will...
setze dich mal mit "open" auseinander!
dan wirst du sehen, dass "wb" "überschreibe im binary-modus" heißt!!!
das muss "a+" sein! ("lese und schreibe dazu")
aber da solltest du dir das nochmal durchlesen, einfach googlen
dan wirst du sehen, dass "wb" "überschreibe im binary-modus" heißt!!!
das muss "a+" sein! ("lese und schreibe dazu")
aber da solltest du dir das nochmal durchlesen, einfach googlen
Hallo Gerold,gerold hat geschrieben:Und genau deshalb ist "a" für Pickle nicht verwendbar. Bitte probier deine Tipps doch ab und zu mal selber aus.
Ideal für Pickle ist "wb", damit es keine böse Überraschung durch Zeilenumbrüche innerhalb der gepickelten Datei gibt.
Also "wb" zum Schreiben und "rb" zum Lesen.
ich muss dazu sagen, dass ich mich nicht so viel mit dem Pickle Modul beschäftige, da ich, bei dem was ich mit Datein machen, ganz gut ohne Pickle auskomme.
Daher war mein Tipp nicht auf das Pickle Modul bezogen, sondern auf arbeiten mit Datein ohne das Pickle Modul.
Gruß Thomas!
mfg
Thomas :-)
Thomas :-)
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!
Hier habe ich ein paar Möglichkeiten zum Speichern von Daten zusammengefasst:
http://www.python-forum.de/post-37898.html#37898
Vielleicht interessiert es jemanden aus diesem Thread.
mfg
Gerold
Hier habe ich ein paar Möglichkeiten zum Speichern von Daten zusammengefasst:
http://www.python-forum.de/post-37898.html#37898
Vielleicht interessiert es jemanden aus diesem Thread.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.