Niveau 05 — Fichiers, exceptions et modules

Objectif du niveau

À la fin de ce niveau, tes programmes survivent à l'arrêt : tu sais lire et écrire des fichiers texte avec with open(...), manipuler des chemins avec pathlib, et gérer l'encodage UTF-8 explicitement. Tu sais gérer les erreurs proprement avec try/except/else/finally au lieu de laisser le programme planter, et lever tes propres exceptions quand une situation est anormale. Enfin, tu sais découper un projet en plusieurs fichiers .py (modules), les importer les uns dans les autres, et organiser un petit projet multi-fichiers.

Prérequis

Durée indicative et avertissement honnête

2 à 3 semaines à raison de 30–60 min par jour.

Ce niveau est moins conceptuel que la mutabilité ou le scope, mais il a deux zones de friction bien réelles. Un : les chemins — « ça marche dans VS Code mais pas dans le terminal » vient presque toujours du dossier courant, et sous Windows les \ compliquent tout (raison pour laquelle on utilise pathlib dès le départ). Deux : le réflexe try/except — la syntaxe est facile, mais savoir QUOI attraper, OÙ, et surtout ne pas écrire except: nu qui avale tout, demande de la pratique et un peu de recul. Les imports, eux, sont simples tant qu'on respecte la règle « lancer le programme depuis la racine du projet ».

Leçons prévues

Chaque leçon suivra le template 17 sections (lessons/TEMPLATE_LECON.md).

TitreNotions couvertesStatut
05-1Lire et écrire des fichiersopen, modes r/w/a, read/readlines, itérer sur les lignes, write, with (et pourquoi c'est obligatoire ici), strip des \n, encodage utf-8 explicite
05-2Chemins avec pathlibPath, chemins relatifs vs absolus, le dossier courant, / pour joindre, exists, mkdir, glob, read_text/write_text, pièges Windows (\, encodage)
05-3Exceptions — try/except/else/finallyAnatomie d'une exception, attraper une exception précise, plusieurs except, else et finally, raise et ValueError maison, pourquoi except: nu est interdit, valider input() proprement
05-4Modules et projet multi-fichiersimport, from ... import, ses propres modules, if __name__ == "__main__":, organiser un petit projet (un module par responsabilité), lancer depuis la racine, ModuleNotFoundError

Pièges et erreurs emblématiques du niveau

Mini-projets du niveau

Fiches détaillées dans /projects.

Critères de sortie

Commit de fin de niveau

git add lessons/level-05-fichiers-exceptions-modules
git commit -m "exercises: complete level 05 (files, exceptions, modules)"