Appearance
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:
| Modus | Bedeutung | Beschreibung |
|---|---|---|
'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/Write | Lesen und Schreiben |
'b' | Binary | Binä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
- Erstelle eine Textdatei und schreibe 3 Zeilen hinein
- Lese die Datei zeilenweise und gib sie aus
- Schreibe ein Programm, das die Anzahl der Zeilen in einer Datei zählt
- Kopiere den Inhalt einer Datei in eine neue Datei
⏭️ Nächstes Kapitel
In Kapitel 14 lernen wir Ausnahmebehandlung (Exception Handling) - Fehler elegant abfangen!
