Skip to main content

Lesen und schreiben von Textdateien

In diesem Artikel werden wir lernen, wie man in Python Dateien lesen und schreiben kann. Die wichtigste Abstraktion die wir dafür nutzen ist ein file object. Wie es der Name schon sagt, ist ein file object eine Instanz einer Klasse, die eine Datei (englisch File) repräsentiert. Das file object stellt uns verschiedene Methoden zur Verfügung, mit denen wir Daten aus einer Datei auslesen oder Daten in eine Datei schreiben können.

Öffnen und schliessen einer Datei

Bevor wir Daten aus einer Datei lesen, oder in eine Datei schreiben können, müssen wir dem Betriebssystem mitteilen, dass wir auf eine bestimmte Datei zugreifen wollen. In Python machen wir das mit der Anweisung open. Um zum Beispiel auf die Datei myFile.txt zuzugreifen, schreiben wir

f = open("myFile.txt")

Die Anweisung open gibt uns dann das für die Datei mit dem Namen myFile.txt zugehörige file object zurück. Wir können dann mit diesem Objekt arbeiten und die Daten lesen. Wenn wir fertig sind, sollten wir die Datei mittels der close Methode wieder schliessen. Damit teilen wir dem Betriebssystem mit, dass wir nicht mehr länger mit dieser Datei arbeiten. Falls die Datei beim Aufruf der open Anweisung nicht gefunden wird, bricht Python mit einem Fehler ab. Wir werden später diskutieren, wie wir auf solche Fehler reagieren können.

Verschiedene Zugriffsmodi

Wenn wir die open Anweisung in obiger Form anwenden, wird die Datei nur zum lesen geöffnet. Die obige Form ist nämlich nur die Kurzform der folgenden Anweisung

f = open("myfile.txt", "r")

Das zweite Argument der Anweisung gibt an, ob wir die Datei zum lesen ("r") oder zum schreiben ("w") öffnen wollen. Wenn wir eine Datei zum schreiben öffnen, wird eine allfällig bereits vorhandene Datei einfach überschrieben. Ein weiterer möglicher Zugriffsmodus, den wir beim öffnen der Datei angeben können ist der append Modus. Wenn wir die Datei im append Modus öffnen, wird alles was wir in die Datei schreiben an das Ende der Datei angehängt.

Lesen und Schreiben von Daten.

Wenn wir eine Datei erfolgreich geöffnet haben, können wir deren Inhalt mit der Methode read lesen. der Aufruf:

f = open("myfile.txt")
content = f.read()
f.close()

liest den gesamten Inhalt einer Datei in einen String, auf welchen wir hier über den namen content zugreifen.

Mit der Methode readlines können wir auch Zeilenweise auf den Inhalt zugreifen. Dabei gibt der Aufruf von readlines uns eine Liste von Zeilen zurück. Wir wissen ja bereits, wie wir mit Listen umgehen. Der folgende Code, mit dem wir den Inhalt der ganzen Datei auf dem Bildschirm ausgeben, sollte entsprechend keine Überraschungen bieten.

f = open("myfile.txt")
for line in f.readlines():
print(line)
f.close()

Analog dazu werden die Methoden write und writelines benutzt um Texte zu speichern.

Experimentieren Sie doch mit diesen Methoden gleich selbst.

Experimente

  • Müssen wir überhaupt readlines() verwenden um über die Zeilen zu iterieren?
  • Was bekommen Sie von der Methode readline() zurück?
  • Wie können wir die Zeilenumbrüche der gelesenen Linien loswerden um nicht zu viele leere Zeilen auszugeben?