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?