Python - Dateien lesen und schreiben
Veröffentlicht: 23.06.2020
Dein Netzwerk ist offline, deshalb laden wir die gesamte Seite aus dem Cache. Beachte: die Inhalte könnten veraltet sein! Für aktuelle Inhalte aktiviere bitte dein Internet.
Hallo liebe Nutzer,
da wir als Coding-Plattform und Webentwickler ausschließlich auf aktuelle Technologien setzen, unterstützen wir keine veralteten Internetbrowser. Bitte schau dir doch ein paar der tollen Alternativen an, bestimmt findest du hier einen für dich passenden modernen Browser!

Python Dateien lesen und schreiben

Inhaltsverzeichnis
[[TABLE OF CONTENTS]]
access_timeGeschätzte Lesezeit ca. Minuten

In Python Textdateien lesen und schreiben ist keine große Schwierigkeit. Es klingt komplexer als es wirklich ist. Du brauchst zum Lesen und Schreiben in einem sehr einfachen Setup jeweils drei verschiedene Funktionen.

Die am häufigsten benötigten Funktionen sind die folgenden:

  • open()
  • close()
  • read()
  • write()

Es gibt noch weitere Funktionen, die aber eher seltener Anwendung finden, vor allem bei Anfängern.

Text aus einer Datei lesen

Die open-Funktion erwartet einen Dateinamen und einen Mode. Den FileMode findest du unten in einer ausführlichen Tabelle. Hier verwenden wir "r" für Read. Dabei wird die Datei nur geöffnet zum Lesen, Schreib-Operationen erzeugen Fehler und die Datei muss bereits existieren, sonst erscheint ein FileNotFoundError. Das FileObject wird einer Variable zugewiesen. Darauf können wir nun verschiedene Aktionen ausführen. Um diese Textdatei zu lesen können wir zum Beispiel die read()-Methode abrufen, als Parameter können wir noch eine Anzahl von Bytes/Chars angeben, die wir lesen wollen, falls wir nicht die ganze Datei haben wollen.

file = open('deineDatei.txt','r')

print(file.read())

file.close()

Zuletzt müssen wir die Datei noch mit close() schließen, da sonst der FileStream weiterhin für die Programmlaufzeit offen ist und das bei einigen Tausend Dateien zu deutlichen Performance -Problemen führen kann. Weiter unten zeige ich noch einmal ein Beispiel, bei dem ihr nicht die close()-Methode ausführen müsst, sondern mit dem Context-Manager von Python arbeiten könnt.

Text in eine Datei schreiben

Beim Schreiben des Textes verwenden wir ebenfalls wieder die open()-Funktion; allerdings dieses Mal mit dem Mode "w" für Write, wenn die Datei nun nicht existieren sollte, wird diese automatisch im Verzeichnis erstellt. Danach können wir diese Datei beschreiben. Hier können wir keinen Read ausführen; falls wir das tun wollen, könnten wir "w+" verwenden, dann können wir die Textdatei schreiben und lesen.

file = open('deineDatei2.txt','w')

print(file.write("Hallo Welt"))

file.close()

Wichtig ist, die Datei am Ende wieder zu schließen. Das sollte man unbedingt tun um Performance zu sparen.

Python Textdatei als Liste für jede Spalte einlesen

Um die einzelnen Zeilen einer Datei als Liste zu erhalten, zum Beispiel für eine Weiterverarbeitung, bietet sich an, readlines() zu verwenden. Dabei erhält man eine Liste von allen Zeilen einer Datei.

file = open('deineDatei2.txt','r')

print(file.readlines())
# ['Hallo Welt 1\n', 'Hallo Welt 2\n', 'Hallo Welt 3\n', 'Hallo Welt 4\n', 'Hallo Welt 5']

file.close()

Aufgepasst: Es gibt auch einen writelines()-Befehl. Wer jetzt denkt, es reiche, die Zeilen einzeln zu schreiben, also mittels writelines() eine Liste durchzujagen um anschließend dann eine Datei mit mehreren Zeilen zu erhalten, liegt falsch. Writelines() sorgt nur dafür, dass man bezüglich der Position immer am Ende des zuvor Geschriebenen ist, ähnlich wie beim Append-Mode, Weiteres dazu in der Tabelle. So können mehrere Write-Befehle im w-mode hintereinander ausgeführt werden. Wenn man den FileStream wieder schließt und wieder anfängt zu schreiben, wird wieder an Position 0 gestartet, der Append-Mode würde am Ende weiter machen.

Deshalb benötigt man, um wirklich die einzelnen Zeilen zu schreiben, den New Line Char im String, das könnte z.B. so aussehen:

file = open('deineDatei2.txt','w')

for elm in ["Hallo","Welt","Was","geht","ab?"]:
    file.writelines(elm + "\n")

file.close()

Als Ergebnisse würden wir das Folgende erhalten:

Hallo
Welt
Was
geht
ab?

Dateien mit Context Manager öffnen und schließen

Der Context Manager kürzt das Öffnen und Schließen unserer Textdatei um eine Zeile. Hier einmal ein Vergleich von vorher zu nachher:

with open('deineDatei.txt','r') as file:
    print(file.read())
file = open('deineDatei.txt','r')

print(file.read())

file.close()

Mittels des with-Statements können wir die Datei nun öffnen. Wenn wir nun den with-Block verlassen, ist die Datei automatisch geschlossen. So vergisst man seltener eine Datei nach der Verwendung wieder zu schließen, da man einfach nur die Einrückung verlassen muss.

Verschiedene Modes um eine Datei zu öffnen

In Python gibt es verschiedene Modes um eine Datei zu Öffnen zu beschrieben/lesen oder zu erstellen. Hier findest du eine Übersicht aller.

Thema der Tabelle "Python Datei öffnen modes"
ModusEnglischer NameBeschreibung
rreadDatei wird zum Lesen geöffnet, wenn nicht vorhanden, wird ein Fehler geworfen. (FileNotFoundError)
wwriteDatei wird zum Schreiben geöffnet, wenn nicht vorhanden, wird eine neue Datei erstellt.
xexclusivDatei wird geöffnet zum Schreiben, wenn die Datei bereits vorhanden ist, gibt es einen Fehler. (FileExistsError)
aappendDatei wird geöffnet, falls vorhanden und der neue Text wird in der Datei ergänzt. Wenn die Datei noch nicht existiert, wird diese auch erstellt.
bbinary modeBinärer Mode
ttext mode (default)Text Mode (Die Bytes werden direkt in den entsprechenden Char konvertiert, z.B. werden bei Linebreaks diese direkt für das Betriebssystem richtig ausgegeben)
+read/write multipleHiermit kannst du zugleich Lesen und Schreiben ausführen.
r+read/write no truncationHierbei wird das Bestehende in der Datei gelesen und nur ab Position 0 der neue String eingesetzt, das Alte an der Stelle wird überschrieben
w+read/write truncationHier bei wird alles aus der Datei gelöscht und dann ab Position 0 der neue Text Eingesetzt

Folgende Parameter kannst du bei r,w,x,a ergänzend verwenden: b,t,+. Diese Parameter geben zusätzliche Eigenschaften an.

Weitere Infos aus dem File Object rausholen

Es gibt zusätzlich einige Attribute, die im File Object dynamisch gesetzt werden. Diese geben dir weitere hilfreiche Informationen zum File.

Thema der Tabelle "Python Datei Attribute"
AttributeBeschreibung
file.closedGibt true oder false zurück, je nach dem ob die Datei noch geöffnet oder schon geschlossen wurde.
file.modeGibt den aktuellen Mode zurück, in dem die Datei geöffnet wurde.
file.nameGibt den aktuellen Dateinamen der Datei zurück.

Fazit

Mittels Python ist es schnell und einfach möglich, Textdateien zu manipulieren/schreiben/lesen. Mittels des Context Managers ist das Schließen auch einfach, und man vergisst es nicht so schnell. Daher kann ich nur empfehlen, immer mit dem Context Manager (dem with-Statement) zu arbeiten.

Ich wünsche dir viel Spaß mit deinem neuen Wissen zum Thema "Dateien schreiben und lesen mittels Python".

Kommentare zum Artikel

Es sind noch keine Kommentare vorhanden? Sei der/die Erste und verfasse einen Kommentar zum Artikel "Python - Dateien lesen und schreiben"!

Kommentar Schreiben:

keyboard_arrow_up
Home Menü Suche
X