Teil 7: Deine Aufgaben speichern & laden – mit einer Datei

Bis jetzt konntest du Aufgaben hinzufügen, anzeigen und löschen.
Aber sobald du das Programm beendet hast, war alles weg.

In diesem Teil zeige ich dir:

  • wie du deine Aufgaben in einer Datei speicherst
  • wie du sie beim nächsten Start wieder laden kannst

So wird aus deinem kleinen To-Do-Programm ein echtes Werkzeug, das merkt, was du gestern eingetragen hast.


Was du in diesem Teil lernst

Neues DingErklärung ganz ohne Fachchinesisch
open()Öffnet eine Datei
write()Schreibt Text in eine Datei
readlines()Liest Text aus einer Datei
with ... as ...:Kümmert sich darum, dass Dateien richtig geöffnet und geschlossen werden
try/exceptVerhindert, dass das Programm abstürzt, wenn z. B. die Datei noch nicht da ist

Keine Sorge: Wir gehen ganz langsam vor und bauen alles Schritt für Schritt auf.


Vorbereitung

Wir speichern unsere Aufgaben in einer Datei, z. B. in:

aufgaben.txt

Das ist einfach eine Textdatei, in der jede Aufgabe in einer eigenen Zeile steht.


Schritt 1: Datei beim Start lesen

Wenn du das Programm öffnest, soll es schauen:
„Gibt’s da schon Aufgaben? Dann lade sie!“

aufgaben = []

try:
    with open("aufgaben.txt", "r", encoding="utf-8") as datei:
        for zeile in datei:
            aufgaben.append(zeile.strip())
except FileNotFoundError:
    # Datei gibt es noch nicht – kein Problem!
    pass

Was passiert hier?

  • open(..., "r") öffnet die Datei zum Lesen
  • zeile.strip() entfernt das \n (Zeilenumbruch am Ende)
  • aufgaben.append(...) fügt jede Aufgabe zur Liste hinzu
  • try/except verhindert einen Absturz, wenn die Datei noch nicht existiert

Schritt 2: Nach Änderungen speichern

Immer wenn du eine neue Aufgabe hinzufügst oder eine erledigst, musst du die Datei neu schreiben:

with open("aufgaben.txt", "w", encoding="utf-8") as datei:
    for aufgabe in aufgaben:
        datei.write(aufgabe + "\n")

💡 "w" steht für „write“ – also schreiben.
Dabei wird der alte Inhalt überschrieben.


🧩 Wann speichern?

Jedes Mal wenn du:

  • eine neue Aufgabe hinzufügst
  • eine Aufgabe löschst

Das heißt: Du fügst den Speicher-Teil einfach nach dem Ändern ein.


Der komplette Code – jetzt mit Dateispeicherung

# Aufgabenliste laden
aufgaben = []

try:
    with open("aufgaben.txt", "r", encoding="utf-8") as datei:
        for zeile in datei:
            aufgaben.append(zeile.strip())
except FileNotFoundError:
    pass  # Wenn es die Datei noch nicht gibt

# Menü starten
while True:
    print("\nWas möchtest du tun?")
    print("1 - Neue Aufgabe hinzufügen")
    print("2 - Aufgaben anzeigen")
    print("3 - Aufgabe erledigt")
    print("4 - Beenden")

    wahl = input("👉 Deine Auswahl: ")

    if wahl == "1":
        neue_aufgabe = input("Was möchtest du erledigen? ")
        aufgaben.append(neue_aufgabe)

        # Liste speichern
        with open("aufgaben.txt", "w", encoding="utf-8") as datei:
            for aufgabe in aufgaben:
                datei.write(aufgabe + "\n")

        print(f"✅ Aufgabe hinzugefügt: {neue_aufgabe}")

    elif wahl == "2":
        if len(aufgaben) == 0:
            print("🎉 Keine Aufgaben – du bist fertig!")
        else:
            print("\n📝 Deine Aufgaben:")
            for nummer in range(len(aufgaben)):
                print(f"{nummer + 1}. {aufgaben[nummer]}")

    elif wahl == "3":
        if len(aufgaben) == 0:
            print("⚠️ Du hast keine Aufgaben zum Erledigen.")
        else:
            eingabe = input("Welche Nummer ist erledigt? ")

            if eingabe.isdigit():
                nummer = int(eingabe) - 1

                if 0 <= nummer < len(aufgaben):
                    erledigt = aufgaben.pop(nummer)

                    # Liste speichern
                    with open("aufgaben.txt", "w", encoding="utf-8") as datei:
                        for aufgabe in aufgaben:
                            datei.write(aufgabe + "\n")

                    print(f"✅ '{erledigt}' wurde entfernt.")
                else:
                    print("⚠️ Diese Nummer gibt es nicht.")
            else:
                print("⚠️ Bitte gib eine gültige Zahl ein.")

    elif wahl == "4":
        print("Tschüss! 👋")
        break

    else:
        print("⚠️ Ungültige Eingabe.")

Beispiel: So sieht deine Datei aus

Wenn du 3 Aufgaben eingibst, steht in aufgaben.txt:

Wäsche waschen
Python üben
Einkaufen

Beim nächsten Start liest das Programm diese Datei wieder ein – und die Aufgaben sind da!


Neue Begriffe erklärt

BegriffBedeutung
open("datei.txt", "r")Datei öffnen zum Lesen
open("datei.txt", "w")Datei öffnen zum Schreiben (überschreibt Inhalt!)
with ... as ...:Öffnet die Datei und schließt sie automatisch wieder
strip()Entfernt Zeilenumbrüche
try/exceptVerhindert Abstürze bei Fehlern (z. B. wenn Datei fehlt)

🎉 Glückwunsch!

Dein To-Do-Programm kann jetzt:

✅ Aufgaben merken
✅ Aufgaben anzeigen
✅ Aufgaben löschen
✅ Aufgaben dauerhaft speichern – sogar zwischen Programmstarts!

Das ist ein riesiger Schritt. Du hast jetzt ein richtiges Mini-Tool gebaut, das man im Alltag verwenden kann.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert