[Python-de] Frage zu x.write('xxxx')

Georg Mischler schorsch at schorsch.com
Fri Jan 3 14:08:09 EST 2003


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/





More information about the Python-de mailing list