Das Lesen und Schreiben von Dateien ist sehr einfach. Ermöglicht wird es durch die Built-in-Funktion open()
. Eine Textdatei mit dem Namen „MyText.txt“ könnte wie folgt gelesen werden:
text_file = open("MyText.txt")
text_file.close()
Die Modi „r“ und „w“
Es stehen verschiedene Modi zur Verfügung, die zusätzlich zum Dateinamen als Argument übergeben werden können. Sofern — so wie hier — kein Modus angegeben wird, wird die Datei zum Lesen geöffnet (Modus r
). Unter Angabe dieses Modus hätte ich auch folgendes schreiben können:
text_file = open("MyText.txt", "r")
text_file.close()
Möchte man eine Datei zum Schreiben öffnen, ist der Modus w
anzugeben. Im folgenden Beispiel wird ein Text, der der Variable text
zugewiesen ist, in die Datei „MyText.txt“ geschrieben. Dieser Vorgang wird auch hier wieder mit close()
abgeschlossen.
text = "Dies ist irgendein Text, der in einer Datei gespeichert ist."
text_file = open("MyText.txt", "w")
text_file.write(text)
text_file.close()
Die Verwendung von with
Die Grundlagen zum Lesen und Schreiben von Dateien kennt ihr nun. Damit ist das Thema aber noch nicht abgeschlossen, denn heutzutage ist es üblich with
zu verwenden. Angewendet auf obiges Beispiel zum Schreiben einer Datei sieht dies folgendermaßen aus:
with open("MyText.txt") as file:
print(file.read())
Der Vorteil dieser Vorgehensweise ist schnell ersichtlich. Die Verwendung von close()
erübrigt sich, da das Schließen der Datei von with
übernommen wird. Die Angabe des Modus r
wurde wieder weggelassen. Die Ausgabe des Dateiinhalts im Terminal wird mit der Zeile
print(file.read())
realisiert. Der Inhalt der Textdatei könnte auch einer Variable zugewiesen werden, wie folgender Code demonstriert:
with open("MyText.txt") as file:
text = file.read()
Kommen wir jetzt noch zum Schreiben von Text in eine Datei. Dafür wird die Datei „MyText2.txt“ zunächst unter Verwendung des Modus w
zum Schreiben geöffnet. Anschließend kommt write()
zum Einsatz:
with open("MyText2.txt", "w") as file2:
file2.write("Dies ist irgendein Text.")
Die Datei „MyText2.txt“ wird neu angelegt. Sollte bereits eine Datei mit diesem Namen existieren, wird sie überschrieben.
Ausnahmebehandlung
Der Versuch, eine Datei zu öffnen, die nicht vorhanden ist, wird mit einem Traceback quittiert:
Traceback (most recent call last):
File "/Users/bodo/Documents/read_write_files/src/main.py", line 31, in <module> main()
File "/Users/bodo/Documents/read_write_files/src/main.py", line 25, in main
with open("MyText.txt") as file:
^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'MyText.txt'
Es ist daher ratsam, eine Ausnahmebehandlung zu implementieren:
try:
with open("MyText.txt") as file:
text = file.read()
print(text)
except FileNotFoundError as ex:
print(ex)
Fazit
Das Lesen und Schreiben von Dateien ist in Python mit with open()
sehr einfach umzusetzen. Die gezeigten Beispiele demonstrieren dies, sind zugleich aber nur ein Einstieg in dieses Thema. Es lohnt sich einen Blick in die offizielle Dokumentation zu werfen, in der weitere Beispiele gezeigt werden.
In diesem Tutorial ging es um das Lesen und Schreiben von schlichten Textdateien. Darüber hinaus gibt es Module für andere Dateitypen. Mit Pillow können Beispielsweise Bilddateien geöffnet oder gespeichert werden. Außerdem stehen Module für Dateien zur Verfügung, deren Inhalt eine bestimmte Struktur aufweist. Unter diese Kategorie fallen beispielsweise JSON– oder CSV-Dateien.