Wie kann man eine Datei sowohl zum Lesen als auch zum Schreiben öffnen?

Gibt es eine Möglichkeit, eine Datei sowohl zum Lesen als auch zum Schreiben zu öffnen?

Als Abhilfe öffne ich die Datei zum Schreiben, schließe sie und öffne sie dann erneut zum Lesen. Aber gibt es eine Möglichkeit, eine Datei beide zu öffnen, zum Lesen und zum Schreiben?

So lesen Sie eine Datei und schreiben in sie hinein (und überschreiben dabei vorhandene Daten), ohne sie zu schließen und wieder zu öffnen:

with open(filename, "r+") as f:
    data = f.read()
    f.seek(0)
    f.write(output)
    f.truncate()
Kommentare (12)

r+" ist der kanonische Modus für gleichzeitiges Lesen und Schreiben. Dies unterscheidet sich nicht von der Verwendung des Systemaufrufs fopen(), da file() / open() nur ein kleiner Wrapper um diesen Betriebssystemaufruf ist.

Kommentare (0)

Ich habe etwas Ähnliches ausprobiert und es funktioniert wie erwartet:

f = open("c:\\log.log", 'r+b')
f.write("\x5F\x9D\x3E")
f.read(100)
f.close()

Wo:

f.read(size) - Um den Inhalt einer Datei zu lesen, rufen Sie f.read(size) auf, das eine bestimmte Datenmenge liest und als String zurückgibt.

Und:

f.write(string) schreibt den Inhalt von string in die Datei und gibt Keine.

Auch wenn Sie Python-Tutorial über das Lesen und Schreiben von Dateien öffnen, werden Sie das finden:

'r+' öffnet die Datei sowohl zum Lesen als auch zum Schreiben.

Unter Windows öffnet 'b' an den Modus angehängt, die Datei im Binärmodus, also es gibt auch Modi wie 'rb', 'wb' und 'r+b'.

Kommentare (2)