Mini-Projekt: Log-Analyse
Anforderungen
- Beispieldatei
app.logerzeugen - Generator liest Zeilen
- Filter (z. B. error/warn)
- Anzahl + Ausgabe der Treffer
- optional Pipeline-Funktionen
Beispiellösung
Lösung anzeigen
from pathlib import Path
log = Path("app.log")
log.write_text(
"INFO start\nWARNING disk low\nERROR boom\nINFO ok\nERROR again\n",
encoding="utf-8",
)
def zeilen(pfad: Path):
with pfad.open(encoding="utf-8") as f:
for z in f:
yield z.strip()
def mit_level(zeilen, level: str):
level = level.upper()
for z in zeilen:
if z.upper().startswith(level):
yield z
errors = list(mit_level(zeilen(log), "ERROR"))
print("Errors:", len(errors))
for e in errors:
print("-", e)
Kapitel 44 geschafft!
Als Nächstes: Dekoratoren und Kontextmanager.