Skip to content

Kapitel 13: Dateioperationen

🎯 Lernziele

In diesem Kapitel lernst du:

  • Dateien zu öffnen und zu schließen
  • Dateien zu lesen (read, readline, readlines)
  • Dateien zu schreiben (write, writelines)
  • with-Anweisung zu verwenden (automatisches Schließen)
  • Häufige Fehler zu vermeiden

13.1 Grundlegender Ablauf

📂 Dateioperationen in 3 Schritten

1. Datei ÖFFNEN

2. DATEI LESEN/SCHREIBEN

3. DATEI SCHLIEßEN

💡 Warum Dateioperationen wichtig sind?

  • Datenpersistenz: Daten über Programmende hinaus speichern
  • Konfigurationsdateien: Einstellungen speichern
  • Protokollierung (Logging): Fehler und Ereignisse aufzeichnen
  • Datenverarbeitung: CSV, TXT, JSON, etc. verarbeiten

13.2 Datei öffnen und schließen

🔓 Datei öffnen (open())

Syntax:

python
datei_objekt = open(dateiname, modus, encoding)

Öffnungsmodi:

ModusBedeutungBeschreibung
'r'Read (Lesen)Nur lesen (Standard, Datei muss existieren)
'w'Write (Schreiben)Schreiben (überschreibt existierende Datei!)
'a'Append (Anhängen)Am Ende anhängen
'r+'Read/WriteLesen und Schreiben
'b'BinaryBinärmodus (für Bilder, etc.)

💡 Einfaches Beispiel

python
# Datei öffnen
datei = open("test.txt", "w", encoding="utf-8")

# Datei schließen (SEHR WICHTIG!)
datei.close()

⚠️ Wichtig: Datei schließen!

python
# Falsch (Ressourcen werden nicht freigegeben!)
datei = open("test.txt", "w")
datei.write("Hallo")
# datei.close()  # Vergessen!

# Richtig (Ressourcen werden freigegeben)
datei = open("test.txt", "w")
datei.write("Hallo")
datei.close()  # Immer schließen!

13.3 Datei lesen

📖 Lesemethoden

1. read() - Alles lesen

python
datei = open("test.txt", "r", encoding="utf-8")
inhalt = datei.read()
print(inhalt)
datei.close()

2. readline() - Eine Zeile lesen

python
datei = open("test.txt", "r", encoding="utf-8")
zeile1 = datei.readline()
zeile2 = datei.readline()
print(zeile1)
print(zeile2)
datei.close()

3. readlines() - Alle Zeilen als Liste lesen

python
datei = open("test.txt", "r", encoding="utf-8")
zeilen = datei.readlines()  # Gibt Liste zurück
print(zeilen)  # ['Zeile1\n', 'Zeile2\n', ...]
datei.close()

💡 Praxisbeispiel: Datei zeilenweise lesen

python
datei = open("test.txt", "r", encoding="utf-8")

for zeile in datei:
    print(zeile, end="")  # end="" verhindert doppelte Zeilenumbrüche

datei.close()

13.4 Datei schreiben

📝 Schreibmethoden

1. write() - String schreiben

python
datei = open("test.txt", "w", encoding="utf-8")
datei.write("Hallo Python!\n")  # \n für Zeilenumbruch
datei.write("Dateioperationen sind wichtig.\n")
datei.close()

2. writelines() - Liste schreiben

python
zeilen = ["Zeile 1\n", "Zeile 2\n", "Zeile 3\n"]

datei = open("test.txt", "w", encoding="utf-8")
datei.writelines(zeilen)
datei.close()

⚠️ Wichtig: Zeilenumbruch (\n) nicht vergessen!

python
# Falsch (alles in einer Zeile)
datei.write("Hallo")
datei.write("Welt")

# Richtig (mit Zeilenumbruch)
datei.write("Hallo\n")
datei.write("Welt\n")

13.5 with-Anweisung (EMPFOHLEN!)

🛡️ Vorteile von with

  • Automatisches Schließen: Datei wird automatisch geschlossen
  • Kürzerer Code: Kein close() nötig
  • Sicherer: Bei Fehlern wird Datei trotzdem geschlossen

💡 Syntax

python
with open(dateiname, modus, encoding) as datei:
    # Dateioperationen
    # Datei wird automatisch geschlossen!

📖 Beispiel: Datei lesen mit with

python
with open("test.txt", "r", encoding="utf-8") as datei:
    inhalt = datei.read()
    print(inhalt)
# Datei wird hier automatisch geschlossen!

📝 Beispiel: Datei schreiben mit with

python
with open("test.txt", "w", encoding="utf-8") as datei:
    datei.write("Hallo Python!\n")
    datei.write("Das ist eine Testdatei.\n")
# Datei wird hier automatisch geschlossen!

13.6 Häufige Fehler

❌ Fehler 1: Datei nicht gefunden

python
# Falsch (FileNotFoundError!)
datei = open("nicht_existiert.txt", "r")

# Richtig (mit Fehlerbehandlung)
try:
    datei = open("nicht_existiert.txt", "r")
except FileNotFoundError:
    print("Datei nicht gefunden!")

❌ Fehler 2: Encoding-Probleme

python
# Falsch (bei deutschen Umlauten → UnicodeDecodeError!)
datei = open("test.txt", "r")  # Ohne encoding

# Richtig (utf-8 verwenden!)
datei = open("test.txt", "r", encoding="utf-8")

❌ Fehler 3: Datei nicht schließen

python
# Falsch (Ressourcenleck!)
datei = open("test.txt", "w")
datei.write("Hallo")
# datei.close()  # Vergessen!

# Richtig (with verwenden!)
with open("test.txt", "w", encoding="utf-8") as datei:
    datei.write("Hallo")

13.7 Praxisbeispiel: Textdatei analysieren

python
def analysiere_datei(dateiname):
    try:
        with open(dateiname, "r", encoding="utf-8") as datei:
            inhalt = datei.read()
            
            # Statistiken
            anzahl_zeichen = len(inhalt)
            anzahl_wörter = len(inhalt.split())
            anzahl_zeilen = inhalt.count("\n") + 1
            
            print(f"Dateiname: {dateiname}")
            print(f"Anzahl Zeichen: {anzahl_zeichen}")
            print(f"Anzahl Wörter: {anzahl_wörter}")
            print(f"Anzahl Zeilen: {anzahl_zeilen}")
            
    except FileNotFoundError:
        print(f"Fehler: Datei '{dateiname}' nicht gefunden!")

# Verwenden
analysiere_datei("test.txt")

📝 Zusammenfassung

In diesem Kapitel hast du gelernt:

  • ✅ Dateien zu öffnen (open()) und zu schließen (close())
  • ✅ Dateien zu lesen (read(), readline(), readlines())
  • ✅ Dateien zu schreiben (write(), writelines())
  • ✅ Die with-Anweisung zu verwenden (EMPFOHLEN!)
  • ✅ Häufige Fehler zu vermeiden

🎯 Übung

  1. Erstelle eine Textdatei und schreibe 3 Zeilen hinein
  2. Lese die Datei zeilenweise und gib sie aus
  3. Schreibe ein Programm, das die Anzahl der Zeilen in einer Datei zählt
  4. Kopiere den Inhalt einer Datei in eine neue Datei

⏭️ Nächstes Kapitel

In Kapitel 14 lernen wir Ausnahmebehandlung (Exception Handling) - Fehler elegant abfangen!

Frei für alle Anfänger