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?