Seite 1 von 1

Frage zum Öffnen und Schreiben von Textdateien

Verfasst: Mittwoch 13. Januar 2021, 20:57
von WalterT
Hallo zusammen,

Textdateien sind ja sehr einfach zu verwenden, trotzdem hätte ich ein paar Fragen dazu:

Beim Öffnen gebe ich einen Modus an:

Code: Alles auswählen

datei = open('Dateiname', 'modus')  # Ich schreib hier einmal modus statt r oder w oder a oder r+
Wenn ich mit 'w' öffne, kann ich schreiben. Wenn ich mit 'r+' öffne, kann ich lesen und schreiben, allerdings schreibt Python alles immer am Ende der Datei dazu.
Das führt dazu, dass ich - wenn ich was ändern will in der Datei - zuerst lesend mit 'r' öffnen muss ('r' kann man auch weglassen), und dann den geänderten Inhalt mit 'w' zurückschreibe.
Jedesmal muss ich jedoch ein open() und ein close() absetzen, weil ich befürchte, dass mir die Datei-Handles überlaufen, wenn ich die Datei nicht jedesmal schließe.

Code: Alles auswählen

datei = open('Testdatei.txt')
...lesen...
datei.close()
...irgendwas am Inhalt ändern = neuer Inhalt
datei = open('Testdatei.txt', 'w')
datei.write(neuer Inhalt)
datei.close()
Mir kommt das eher umständlich vor. Wenn 'r+' den Inhalt der Datei überschreiben könnte, wäre es für mich praktischer. Kann man nicht irgendwie angeben, ab welcher Position in der Datei man schreiben möchte? Hab im Guugl leider nichts gefunden.

Danke.

Re: Frage zum Öffnen und Schreiben von Textdateien

Verfasst: Mittwoch 13. Januar 2021, 21:06
von Sirius3
r+ schreibt an der aktuellen Position, da Du die Datei komplett liest, ist die aktuelle Position am Ende der Datei. Aber r+ ist sowieso für Text-Dateien unsinnig. Textdateien muß man im Normalfall sowieso komplett neu schreiben.
Dateien öffnet man immer innerhalb eines with-Statements.

Code: Alles auswählen

with open('Testdatei.txt', encoding="utf8") as datei:
    ....
with open('Testdatei.txt', 'w', encoding='utf8') as datei:
    datei.write(text)

Re: Frage zum Öffnen und Schreiben von Textdateien

Verfasst: Mittwoch 13. Januar 2021, 21:06
von __deets__
Um deiner Sorge zu begegnen, gibt es das with-statement, mit dem man sicherstellt, dass eine geöffnete Datei auch immer geschlossen wird.

Zu deiner Frage: man kann natürlich mit seek arbeiten. Faktisch ist das aber nur sinnvoll, wenn man garantiert immer Daten gleicher Länge hat. Was bei Texten mit Zeilen tendenziell nicht der Fall ist. In dem Fall kommt man um einen Austausch des gesamten Inhaltes nicht herum.

Re: Frage zum Öffnen und Schreiben von Textdateien

Verfasst: Mittwoch 13. Januar 2021, 21:07
von Dennis89
Hallo,

du brauchst die Datei nicht jedes mal schliessen, wenn du sie mit 'with' öffnest.

Code: Alles auswählen

with open(filename, 'r') as file:
    #do_something_with_file
Grüße
Dennis

Re: Frage zum Öffnen und Schreiben von Textdateien

Verfasst: Mittwoch 13. Januar 2021, 23:05
von narpfel
Wenn man den gesamten Text liest und die Datei nicht Zeile für Zeile verarbeiten will, gibt es auch noch `pathlib.Path.read_text` und `pathlib.Path.write_text`.

Re: Frage zum Öffnen und Schreiben von Textdateien

Verfasst: Donnerstag 14. Januar 2021, 09:14
von WalterT
That's it !! Vielen Dank an alle und lg
Walter