hi ich versuche gerade, mich bei python in die Speicherung von Daten einzuarbeiten. Zuerst möchte ich versuchen, beliebige strings in einem .txt Dokument zu speichern. Dazu habe ich folgenden kleinen Quelltext: def spielerei(text): spiel = open('wow.txt') spiel.read() spiel.write(text) spiel.read() spiel.close() return 'fertig' print spielerei('sosososo') Leider gibt mir python dabei diesen Fehler aus: Traceback (most recent call last): File "C:/Python21/spielerei.py", line 9, in ? print spielerei('sosososo') File "C:/Python21/spielerei.py", line 4, in spielerei spiel.write(text) IOError: (0, 'Error') Was habe ich nun falsch gemacht, der Quelltext sieht doch so einfach aus? Ich wäre auch für Tipps zu guter (Internet-) Literatur zum Thema Speicherung dankbar. Mfg Kathleen -- +++ GMX - Mail, Messaging & more http://www.gmx.net +++ NEU: Mit GMX ins Internet. Rund um die Uhr für 1 ct/ Min. surfen! _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de
Kathleen Dennler <kdennler@gmx.de> wrote:
ich versuche gerade, mich bei python in die Speicherung von Daten einzuarbeiten. Zuerst möchte ich versuchen, beliebige strings in einem .txt Dokument zu speichern. Dazu habe ich folgenden kleinen Quelltext:
def spielerei(text): spiel = open('wow.txt') spiel.read() spiel.write(text) spiel.read() spiel.close() return 'fertig'
print spielerei('sosososo')
Leider gibt mir python dabei diesen Fehler aus:
Du hast die Datei nur zum Lesen geöffnet -- daher wird beim Versuch, Daten hineinzuschreiben, ein Fehler gemeldet. Es ist zwar möglich, dasselbe Dateiobjekt (das vom open() geliefert wird, bei Dir spiel) zum Schreiben und zum Lesen im Wechsel zu verwenden, aber das ist nicht gerade leichte Kost für Einsteiger ... Also entweder liest und schreibst Du verschiedene Dateien: def spielerei(text): einspiel = open("wow.txt") ausspiel = open("boah.txt", "w") # zum Schreiben geöffnet daten = einspiel.read() ausspiel.write(text + daten) einspiel.close() ausspiel.close() return daten print spielerei("sosososo") # gibt die gelesenen Daten aus oder Du liest und schreibst nacheinander: def spielerei(text): spiel = open("wow.txt") # zum Lesen altedaten = spiel.read() spiel.close() spiel = open("wow.txt", "w") # zum Schreiben spiel.write(text) # alten Inhalt überschreiben spiel.close() return altedaten print "vorher stand drin:", spielerei("sosososo\n") Für den Anfang ist das vielleicht einfacher. Detlef _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de
[Arrrgg. Lieber Moderator, bitte wirf mein voriges Posting weg; ich hatte eine abweichende Absenderadresse benutzt.] Kathleen Dennler <kdennler@gmx.de> wrote:
ich versuche gerade, mich bei python in die Speicherung von Daten einzuarbeiten. Zuerst möchte ich versuchen, beliebige strings in einem .txt Dokument zu speichern. Dazu habe ich folgenden kleinen Quelltext:
def spielerei(text): spiel = open('wow.txt') spiel.read() spiel.write(text) spiel.read() spiel.close() return 'fertig'
print spielerei('sosososo')
Leider gibt mir python dabei diesen Fehler aus:
Du hast die Datei nur zum Lesen geöffnet -- daher wird beim Versuch, Daten hineinzuschreiben, ein Fehler gemeldet. Es ist zwar möglich, dasselbe Dateiobjekt (das vom open() geliefert wird, bei Dir spiel) zum Schreiben und zum Lesen im Wechsel zu verwenden, aber das ist nicht gerade leichte Kost für Einsteiger ... Also entweder liest und schreibst Du verschiedene Dateien: def spielerei(text): einspiel = open("wow.txt") ausspiel = open("boah.txt", "w") # zum Schreiben geöffnet daten = einspiel.read() ausspiel.write(text + daten) einspiel.close() ausspiel.close() return daten print spielerei("sosososo") # gibt die gelesenen Daten aus oder Du liest und schreibst nacheinander: def spielerei(text): spiel = open("wow.txt") # zum Lesen altedaten = spiel.read() spiel.close() spiel = open("wow.txt", "w") # zum Schreiben spiel.write(text) # alten Inhalt überschreiben spiel.close() return altedaten print "vorher stand drin:", spielerei("sosososo\n") Für den Anfang ist das vielleicht einfacher. Detlef _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de
Kathleen Dennler wrote:
hi
ich versuche gerade, mich bei python in die Speicherung von Daten einzuarbeiten. Zuerst möchte ich versuchen, beliebige strings in einem .txt Dokument zu speichern. Dazu habe ich folgenden kleinen Quelltext:
def spielerei(text): spiel = open('wow.txt') spiel.read() spiel.write(text) spiel.read() spiel.close() return 'fertig'
print spielerei('sosososo')
print open.__doc__ open(filename[, mode[, buffering]]) -> file object
Open a file. The mode can be 'r', 'w' or 'a' for reading (default), writing or appending. The file will be created if it doesn't exist when opened for writing or appending; it will be truncated when opened for writing. Add a 'b' to the mode for binary files. Add a '+' to the mode to allow simultaneous reading and writing. If the buffering argument is given, 0 means unbuffered, 1 means line buffered, and larger numbers specify the buffer size.
Wenn du bei open() das "mode"-Argument weglaesst, dann wird die Datei im read-only Modus geoeffnet. Konsequenterweise scheitert dann das Schreiben. Wenn du erst die alten Inhalte lesen willst, dann ist "r+" die passende Variante. Wenn du mit den beim ersten spiel.read() gelesenen Daten irgendwas anfangen moechtest, dann solltest du sie wohl gleich einer Variable zuordnen. Wenn du dich damit nur ans Ende der Datei bewegen willst (um die neuen Daten anzuhaengen), dann waere der mode-Parameter "a" (oder "a+") sehr viel eleganter. Dein zweites spiel.read() ist uebrigens wirkungslos, weil du zu dem Zeitpunkt schon am Ende der Datei (hinter den gerade geschriebenen Daten) stehst. Du koenntest also auf beide read() einfach verzichten, und die Daten gleich im reinen Schreibmodus oeffnen. Mit "w" werden dabei existierende Dateiinhalte weggeworfen, mit "a" werden die neuen Daten hinten angehaengt. -schorsch -- Georg Mischler -- simulations developer -- schorsch at schorsch com +schorsch.com+ -- lighting design tools -- http://www.schorsch.com/ _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de
participants (4)
-
Detlef Lannert -
Detlef Lannert -
Georg Mischler -
Kathleen Dennler