376 Stimmen

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 zu öffnen für beide Lesen und Schreiben?

438voto

Flimm Punkte 112964

So lesen Sie eine Datei und schreiben dann 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()

341voto

AbstProcDo Punkte 17041

Fassen Sie das E/A-Verhalten zusammen:

Modus

r

r+

w

w+

a

a+

Lesen Sie

+

+

+

+

Schreiben Sie

+

+

+

+

+

erstellen.

+

+

+

+

Abdeckung

+

+

Punkt am Anfang

+

+

+

+

Punkt zum Schluss

+

+

Entscheidungsbaum für die obige Tabelle:

53voto

Andreas Jung Punkte 1

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

25voto

Artsiom Rudzenka Punkte 26969

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 liest eine bestimmte Datenmenge und gibt sie als Zeichenkette zurück.

Und:

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

Auch wenn Sie die Python-Tutorial zum Lesen und Schreiben von Dateien werden Sie das finden:

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

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X