Python Tutorial
- jetzt Python programmieren lernen

in Dateien schreiben mit Python

Nach dem Auslesen einer Datei wollen wir nun aus Python heraus in eine Datei schreiben. Unser bisheriger Stand zum Auslesen der Datei mit dem Namen "textdatei.txt" ist:

datei = open('textdatei.txt','r')
print(datei.read())

Im ersten Schritt müssen wir den Modus ändern, wie die Datei bei dem Befehl open geöffnet wird. Es stehen und für das Schreiben die Methoden "w", "a" und "r+" zur Verfügung.

Zum Testen verwenden wir den Modus "a" für "append" um Inhalt an eventuell bestehenden Inhalt anzuhängen.

datei = open('textdatei.txt','a')
datei.write("weitere Zeile")

Wenn wir nun das Programm ausführen lassen, erhalten wir keinerlei sichtbare Reaktion. Wenn wir nun in unsere Datei "textdatei.txt" sehen, wurde für jedes ausführen eine weitere "weitere Zeile" hinzugefügt.

Diese wird einfach am bestehenden Text angefügt. Ohne neue Zeile! Lassen wir das Programm zweimal ausführen steht dann in der Datei hintereinander.

weitere Zeileweitere Zeile

Wir haben also keine weitere Zeile erstellt, sondern Text an eine bestehende Zeile angehängt.

Um auch einen Zeilenumbruch zu erhalten, brauchen wir die entsprechenden Steuerzeichen. Ungeschickterweise sind diese zwischen Windows, Linux und Mac unterschiedlich. Bei einigen Systemen reicht

"\n" für newline

"\r\n" für return/newline

Unser Code sieht also wie folgt aus:

datei = open('textdatei.txt','r')
datei.write("\r\nweitere Zeile")

Wir fügen vor unserem Text den Zeilenumbruch hinzu. Lassen wir nun unser Programm 2-mal ausführen, erhalten wir wie gewünscht in der Datei das Ergebnis mit Zeilenumbruch:

weitere Zeile

weitere Zeile

Modus w beim schreiben

Ändern wir den Modus auf "w" wird die Datei überschrieben mit dem neuen Inhalt.

datei = open('textdatei.txt','w')
datei.write("\r\nweitere Zeile")

Lassen wir nun unser Programm ausführen, erhalten wir im Ergebnis nur noch die Zeile. Alle alten Inhalte wurden "überschrieben".

weitere Zeile

gleichzeitig schreiben und lesen – r+

Wollen wir aus einer Datei sowohl lesen wie in diese Datei schreiben, benötigen wir als Modus "r+". Jetzt können wir unser Python-Programm erweitern und auch gleich die neuen Inhalte auslesen.

datei = open('textdatei.txt','r+')
datei.write("\r\nweitere Zeile")
print(datei.read())

Sollte nun nichts als Ausgabe erscheinen, dann sieht man das Problem bei "r+". Wir lesen schneller aus, als in die Datei geschrieben wurde bzw. das System puffert und daher kommt Chaos. Daher kommt nichts in der Ausgabe. Daher den Modus "r+" nur mit Vorsicht nutzen! Hier hilft das Schließen der Verbindung über die Methode close(). Allerdings muss dann auch die Datei wieder geöffnet werden.

datei = open('textdatei.txt','r+')
datei.write("\r\nweitere Zeile")
datei.close()
datei = open('textdatei.txt','r+')
print(datei.read())
datei.close()

Lesen/Schreiben binär

Sollten wir nun mit Binären Daten arbeiten, dann ist als Modus "b" angesagt, der an das primäre Kürzel angehängt wird.

Beispiel für Schreiben Binär

datei = open('textdatei.txt','wb')

Oder für lesen Binär

datei = open('textdatei.txt','rb')