6  Arbeiten mit Dateien

Programme arbeiten oft nicht nur mit Benutzereingaben, sondern auch mit Textdateien – zum Beispiel um Daten zu speichern oder zu laden.

Python bietet einfache Funktionen, um:

6.1 Lernziele dieses Kapitels

Am Ende dieses Kapitels können Sie:

  • Dateien mit open() öffnen,
  • Inhalte aus Textdateien einlesen,
  • Texte in Dateien schreiben,
  • mit with-Blöcken sicher und einfach arbeiten.

6.2 Eine Datei einlesen

# Beispiel: Datei lesen
with open("01-daten/beispiel.txt", "r") as datei:
    inhalt = datei.read()
    print(inhalt)
Dies ist ein Test.
  • "r" steht für read (lesen).
  • with sorgt dafür, dass die Datei nach dem Lesen automatisch geschlossen wird.
  • read() liest den gesamten Inhalt der Datei als String.

6.3 Zeilenweise lesen

with open("01-daten/beispiel.txt", "r") as datei:
    for zeile in datei:
        print("Zeile:", zeile.strip())
Zeile: Dies ist ein Test.
Note

.strip() entfernt Leerzeichen und Zeilenumbrüche am Anfang und Ende.

Angenommen, es gibt eine Datei gruesse.txt mit folgendem Inhalt:

Hallo Anna
Guten Morgen Ben
Willkommen Carla

Schreiben Sie ein Programm, das jede Zeile einzeln einliest und mit print(...) wiedergibt.

with open("01-daten/gruesse.txt", "r") as f:
    for zeile in f:
        print(zeile.strip())
Hallo Anna
Guten Morgen Ben
Willkommen Carla

6.4 Alle Zeilen auf einmal lesen mit readlines()

Statt über eine Datei zu iterieren, können Sie alle Zeilen auf einmal als Liste einlesen:

with open("01-daten/beispiel.txt", "r") as f:
    zeilen = f.readlines()
    print(zeilen)
['Dies ist ein Test.']
Important

Oftmals bestehen die eingelesenen Zeilen aus Werten, die durch ein spezifisches Trennzeichen z.B. “,”. Um diese Zeilen dann in die einzelnen Werte zu trennen, benutzen wir die .split()-Funktion.

zeile = "319,12,14,190,342"
print(zeile.split(","))
['319', '12', '14', '190', '342']

Jede Zeile endet mit \n, deshalb kann eine Nachbearbeitung mit .strip() sinnvoll sein:

for zeile in zeilen:
    print(zeile.strip())
Dies ist ein Test.

6.5 In eine Datei schreiben

with open("ausgabe.txt", "w") as datei:
    datei.write("Das ist eine neue Zeile.\n")
    datei.write("Und noch eine.")
  • "w" steht für write (schreiben).
  • Achtung: Eine vorhandene Datei wird überschrieben!

6.6 Zeilenweise schreiben mit Schleife

daten = ["Apfel", "Banane", "Kirsche"]

with open("obst.txt", "w") as f:
    for eintrag in daten:
        f.write(eintrag + "\n")
Important

Jede Zeile endet mit \n für einen Zeilenumbruch.

Gegeben ist eine Liste von Städten:

staedte = ["Berlin", "Hamburg", "München"]
  • Schreiben Sie ein Programm, das jede Stadt in eine neue Zeile einer Datei staedte.txt schreibt.
staedte = ["Berlin", "Hamburg", "München"]

with open("staedte.txt", "w") as f:
    for stadt in staedte:
        f.write(stadt + "\n")

6.7 Dateien manuell schließen mit close()

Wenn Sie keinen with-Block verwenden, müssen Sie die Datei selbst schließen – sonst bleibt sie geöffnet:

datei = open("01-daten/beispiel.txt", "w")
datei.write("Dies ist ein Test.")
datei.close()
Important

close() ist wichtig, damit Änderungen gespeichert werden und die Datei nicht gesperrt bleibt.

Empfehlung: Nutzen Sie immer with open(...), da Python die Datei dann automatisch schließt – auch bei Fehlern.