Was ist der genaue Unterschied zwischen den Modi w
, a
, w+
, a+
und r+
in der in Python eingebauten Funktion open?
Insbesondere impliziert die Dokumentation, dass alle diese Modi das Schreiben in die Datei erlauben, und sagt, dass sie die Dateien speziell für "Anhängen", "Schreiben" und "Aktualisieren" öffnet, definiert aber nicht, was diese Begriffe bedeuten.
Die Öffnungsmodi sind genau die gleichen wie die der C-Standardbibliotheksfunktion fopen()
.
Die BSD fopen
-Manpage definiert sie wie folgt:
The argument mode points to a string beginning with one of the following
sequences (Additional characters may follow these sequences.):
``r'' Open text file for reading. The stream is positioned at the
beginning of the file.
``r+'' Open for reading and writing. The stream is positioned at the
beginning of the file.
``w'' Truncate file to zero length or create text file for writing.
The stream is positioned at the beginning of the file.
``w+'' Open for reading and writing. The file is created if it does not
exist, otherwise it is truncated. The stream is positioned at
the beginning of the file.
``a'' Open for writing. The file is created if it does not exist. The
stream is positioned at the end of the file. Subsequent writes
to the file will always end up at the then current end of file,
irrespective of any intervening fseek(3) or similar.
``a+'' Open for reading and writing. The file is created if it does not
exist. The stream is positioned at the end of the file. Subse-
quent writes to the file will always end up at the then current
end of file, irrespective of any intervening fseek(3) or similar.
Die Optionen sind die gleichen wie bei der Funktion <a href="http://www.manpagez.com/man/3/fopen/"fopen in der C-Standardbibliothek:
w
schneidet die Datei ab und überschreibt alles, was bereits vorhanden war
a" hängt an die Datei an und fügt hinzu, was bereits vorhanden war
w+" öffnet die Datei zum Lesen und Schreiben, wobei die Datei abgeschnitten wird, Sie aber auch zurücklesen können, was in die Datei geschrieben wurde.
a+" öffnet zum Anhängen und Lesen, so dass Sie sowohl an die Datei anhängen als auch ihren Inhalt lesen können
Ich bin darauf gestoßen, als ich versuchte herauszufinden, warum man den Modus 'w+' gegenüber 'w' verwenden sollte. Am Ende habe ich einfach ein paar Tests durchgeführt. Ich sehe keinen Grund für den Modus 'w+', da die Datei in beiden Fällen von vornherein abgeschnitten wird. Mit 'w+' könnte man jedoch nach dem Schreiben lesen, indem man zurücksucht. Wenn Sie versuchen würden, mit 'w' zu lesen, würde dies einen IOFehler auslösen. Lesen ohne Suchen mit dem Modus 'w+' bringt nichts, da der Dateizeiger hinter der Stelle steht, an die Sie geschrieben haben.