Programm speichern/laden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

Hallo an alle!

ich habe ein kleines Programm, dass mit raw_input verschiedene Zahlen eines Benutzers einliest.
in einer funktion kann ich mir alles eingegeben daten nochmal anschauen, sowei so gut!
jetzt möchte ich, dass diese zahlen in einer txt datein gespeichert werden und auch wieder geladen werden können!
habt ihr eine idee, wie sowas funktionieren könnte?

Vielen Dank!
Never touch a running system...
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Naja, zuerst mal öffnest Du eine Datei

Code: Alles auswählen

f = file("dateiname.txt", "w")
Das "w" steht für write. Dann schreibst Du was rein

Code: Alles auswählen

f.write(was_auch_immer)
Zum lesen, Datei öffnen ("r" = read)

Code: Alles auswählen

f = file("dateiname.txt", "r")
und lesen

Code: Alles auswählen

xyz = f.read()
Gruß, mawe
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

dankeschön vom prinzip her funktionierts!
nur er zeigt mir bei float werden (meine vermutun) diesen fehler an:

Traceback (most recent call last):
File "menu.py", line 206, in ?
f.write(schnittlaenge_kreis)
TypeError: argument 1 must be string or read-only character buffer, not float
Never touch a running system...
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Einfach in einen String umwandeln

Code: Alles auswählen

f.write(str(schnittlaenge_kreis))
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

und am ende deiner funktion solltest du die datei in welche du schreibst
auch schließen.

Code: Alles auswählen

f.close()
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Oder den ini-Parser nehmen, wenn es mehr Daten werden... Oder gleich pickle nehmen, hat den Vorteil, das man ganze Datensätzte leicht abspeichern und laden kann, allerdings ist die Textdatei nicht mehr wirklich per Hand bearbeitbar...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

alles klar vielen dank hat perfekt geklappt!

ein schönheitsfehler hab ich noch, die txt schreibt dann alles hintereinander, wie kann ich es erreichen eine newline zu setzen?
Never touch a running system...
mr.hide
User
Beiträge: 108
Registriert: Montag 29. August 2005, 14:02

Alpha-Phonix hat geschrieben:alles klar vielen dank hat perfekt geklappt!

ein schönheitsfehler hab ich noch, die txt schreibt dann alles hintereinander, wie kann ich es erreichen eine newline zu setzen?

Code: Alles auswählen

f.write(zuschreibenderstring + "\n")
Grüße
Matthias

- Fluchen befreit von Kummer und Leid -
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

da kommt dann...

Traceback (most recent call last):
File "menu.py", line 210, in ?
f.write(str(schnittlaenge_kreis + "\n"))
TypeError: unsupported operand type(s) for +: 'float' and 'str'
Never touch a running system...
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

mr.hide hat ja auch geschrieben "zuschreibenderstring", das soll also schon ein string sein. Also, entweder

Code: Alles auswählen

f.write(str(schnittlaenge_kreis) + "\n")
oder

Code: Alles auswählen

f.write("%s\n" % schnittlaenge_kreis)
Bei der zweiten Methode kann am wenigsten schief gehen, weil %s alles in einen String umwandelt.
mr.hide
User
Beiträge: 108
Registriert: Montag 29. August 2005, 14:02

Alpha-Phonix hat geschrieben:da kommt dann...

Traceback (most recent call last):
File "menu.py", line 210, in ?
f.write(str(schnittlaenge_kreis + "\n"))
TypeError: unsupported operand type(s) for +: 'float' and 'str'
Generell solltest du dir angewöhnen die Fehlermeldungen zu lesen.

- TypeError: es stimmt etwas nicht mit den verwendeten Datentypen.
- unsupported operand type(s): operand, damit ist das + gemeint.
ja und unsupported types, kann dann nur noch heissen dass man str und float nicht addieren kann :wink:

also hast du 2 möglichkeiten aus dem str ein float zu machen was recht sinnfrei ist oder aus dem float ein str.
Grüße
Matthias

- Fluchen befreit von Kummer und Leid -
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

vielen dank, dass mit dem speichern funktioniert jetzt einwandfrei!

nun zum laden, ich habe wie oben beschrieben programmiert, jedoch (wäre hätte es gedacht) klappt es nicht so, wie ich des will...

ich habe jetzt ein txt datei und will die werte die da drin stehn, in meinem prog wieder benutzen, dass heißt:

wenn in der txt steht

Radius: 5cm

dann will ich nach dem laden, wieder mit dem wert arbeiten können, da sagt er mir immer radius is not defiend....
wie muss ich des machen??
Never touch a running system...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dazu passt der eine ini Datei besser! Schau mal hier: http://www.python-forum.de/viewtopic.php?p=27731#27731

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten