44 lines
1.9 KiB
Markdown
44 lines
1.9 KiB
Markdown
# Kapitel 13: Datei-Persistenz (JSON & CSV) 💾📁
|
|
|
|
In diesem Kapitel lernst du, wie du deine Python-Objekte dauerhaft auf der Festplatte speicherst, sodass deine Daten auch nach dem Beenden des Skripts oder Ausschalten des Computers erhalten bleiben.
|
|
|
|
---
|
|
|
|
## 🎯 Was du lernst
|
|
|
|
1. **Flüchtiger RAM vs. Dauerhafte Festplatte:** Warum Daten im Arbeitsspeicher beim Programmende verschwinden und wie Dateien für dauerhafte Speicherung (Persistenz) sorgen.
|
|
2. **Sauberer Dateizugriff mit `with open(...)`:**
|
|
```python
|
|
with open("savegame.json", "w", encoding="utf-8") as f:
|
|
# Datei wird automatisch sicher geschlossen, selbst bei Fehlern!
|
|
```
|
|
3. **JSON (JavaScript Object Notation):**
|
|
- Das Standard-Format für verschachtelte Daten und Konfigurationen.
|
|
- `json.dump(daten, f, indent=4, ensure_ascii=False)` zum Schreiben.
|
|
- `daten = json.load(f)` zum Einlesen.
|
|
4. **Objekt-Serialisierung in OOP:**
|
|
- `to_dict(self)`: Wandelt ein Objekt in ein serialisierbares Dictionary um.
|
|
- `from_dict(cls, data)`: Erstellt aus einem Dictionary wieder eine echte Klasseninstanz.
|
|
5. **CSV (Comma-Separated Values):**
|
|
- Ideal für flache Tabellendaten (z.B. für Excel, Google Sheets oder Numbers).
|
|
- `csv.DictWriter` und `csv.DictReader`.
|
|
6. **Praxisbeispiel:** Ein **Savegame- und Highscore-Manager** für ein RPG / Spiel.
|
|
|
|
---
|
|
|
|
## 📁 Die Dateien in diesem Ordner
|
|
|
|
- **`index.html`**: Die interaktive Lernseite mit Tagebuch-Analogie, JSON- vs. CSV-Vergleichstabelle, Codebeispielen und Checkliste.
|
|
- **`aufgabe.py`**: Dein Arbeitsblatt zum Implementieren der Klassen `Spieler` und `Spielstand`.
|
|
- **`test_aufgabe.py`**: Automatische Unittest-Suite (`python3 test_aufgabe.py`).
|
|
- **`musterloesung.py`**: Vollständig ausprogrammierte Beispiellösung.
|
|
|
|
---
|
|
|
|
## 🚀 Schnellstart
|
|
|
|
```bash
|
|
# 1. Bearbeite aufgabe.py
|
|
# 2. Teste deine Lösung:
|
|
python3 test_aufgabe.py
|
|
```
|