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, rufen wir die close Methode auf, um dem Betriebssystem mitzuteilen, 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.

Modi zum öffnen der Datei

Wenn wir die open Anweisung in obiger Form anwenden, wird die Datei zum schreiben geöffnet. Die obige Form ist die Kurzform der folgenden Anweisung

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

Das zweite Argument gibt an, ob wir die Datei zum lesen ("r") oder zum schreiben ("w") öffnen wollen. Wenn wir diese zum schreiben öffnen, dann wird die Datei, falls bereits vorhanden, überschrieben. Wenn wir an eine bestehende Datei neue Daten anhängen wollen, wählen wir als drittes Argument ("a"), welches für append steht.

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. Um den Inhalt der ganzen Datei auf dem Bildschirm auszugeben, könnten wir folgendes schreiben:

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?