Lektion 16 von 35Python
Python · Lektion 16 · 25 Minuten
Dateien lesen und schreiben
Das lernst du
- Mit
open()undwithDateien schreiben und lesen - Zeilen einer Datei verarbeiten
- Daten an eine Datei anhängen
Daten, die bleiben
Variablen vergessen alles, sobald das Programm endet. Wenn du etwas aufheben willst – Highscores, Einstellungen, Messwerte deines Roboters –, schreibst du es in eine Datei.
Gut zu wissen: Auf Codelix liegen die Dateien in einem kleinen, unsichtbaren Speicher im Browser. Sie gelten nur, solange die Seite offen ist. Auf deinem Computer funktioniert der Code genauso – dort landen die Dateien wirklich auf der Festplatte.
Schreiben
open(name, "w") öffnet eine Datei zum Schreiben (w wie write). Mit with wird sie am Ende automatisch geschlossen:
with open("einkauf.txt", "w") as datei:
datei.write("Milch\n")
datei.write("Brot\n")
print("Gespeichert!")\n ist ein Zeilenumbruch. Ohne ihn stünde alles in einer langen Zeile.
Lesen
Ohne zweiten Wert öffnet open() zum Lesen. Mit einer for-Schleife bekommst du die Datei Zeile für Zeile:
with open("einkauf.txt", "w") as datei:
datei.write("Milch\nBrot\nÄpfel\n")
with open("einkauf.txt") as datei:
for nummer, zeile in enumerate(datei, start=1):
print(nummer, zeile.strip())strip() entfernt den Zeilenumbruch am Ende jeder Zeile.
Anhängen
"w" löscht den alten Inhalt. Willst du etwas dazuschreiben, nimm "a" (wie append):
with open("log.txt", "w") as datei:
datei.write("Start\n")
for runde in range(3):
with open("log.txt", "a") as datei:
datei.write(f"Runde {runde}\n")
print(open("log.txt").read())| Modus | Bedeutung |
|---|---|
"r" | lesen (Standard) |
"w" | schreiben – alter Inhalt wird gelöscht |
"a" | anhängen ans Ende |
Merke: Dateien enthalten immer Text. Zahlen musst du beim Lesen mit
int()oderfloat()zurückverwandeln.
Kurz-Check
Bevor es an die Aufgabe geht: Was gibt dieses Programm aus? Tipp deine Vermutung ein – Python rechnet danach nach.
with open("notiz.txt", "w") as f:
f.write("A\nB\nC\n")
with open("notiz.txt") as f:
print(len(f.readlines()))Deine Aufgabe
Jetzt bist du dran
Schreib die Highscores aus der Liste punkte in die Datei highscores.txt – jede Zahl in eine eigene Zeile. Lies die Datei danach wieder ein, rechne die Zahlen zusammen und gib Summe: 52 aus. Der Test probiert es auch mit einer anderen Liste.
punkte = [12, 7, 33]
# 1. Schreiben
# 2. Lesen und zusammenrechnen- Denkanstoß
Schreib mit
datei.write(f"{p}\n")– das \n macht den Zeilenumbruch. - Welcher Befehl hilft?
Rechne mit den Zahlen, die du aus der Datei liest – nicht mit einer fest eingetippten Summe.
- Lückencode – ergänze die ___
punkte = [12, 7, 33] with ___ as datei: for p in ___: datei.write(___) summe = ___ with ___ as datei: for zeile in ___: summe += ___ print(___)
Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.
Lösung anzeigen🔒 Erst nach allen Hinweisen oder 2 Prüf-Versuchen
Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:
punkte = [12, 7, 33]
with open("highscores.txt", "w") as datei:
for p in punkte:
datei.write(f"{p}\n")
summe = 0
with open("highscores.txt") as datei:
for zeile in datei:
summe += int(zeile)
print(f"Summe: {summe}")