Niveau 09 — Automatisation, APIs et données
Objectif du niveau
À la fin de ce niveau, ton Python sort de son bocal : tu sais installer des bibliothèques tierces dans un environnement virtuel (venv + pip), interroger une API publique avec requests (HTTP GET, paramètres, JSON), lire et écrire des fichiers CSV, et automatiser de vraies corvées de ta machine (renommer des fichiers en masse, générer un rapport automatique). Tu sais aussi faire tes premiers pas d'analyse de données : charger un CSV, filtrer, agréger, sortir des chiffres utiles.
Prérequis
- Niveau 05 — fichiers,
pathlib, exceptions : tout ce niveau lit/écrit des fichiers et gère des erreurs (réseau, données manquantes). - Niveau 03 — dicts et listes : le JSON, c'est des dicts et des listes ; un CSV, c'est des listes de lignes.
- Niveau 08 — bonnes pratiques : les scripts d'automatisation méritent structure et tests aussi.
- Notions clés :
with open,try/except, dicts imbriqués, terminal.
Durée indicative et avertissement honnête
3 semaines à raison de 30–60 min par jour.
C'est le niveau le plus motivant (ton code fait ENFIN des choses visibles et utiles) mais il introduit une catégorie de difficulté nouvelle : le monde extérieur ne coopère pas. Une API renvoie une erreur 429, le JSON n'a pas la clé attendue, le CSV a une colonne vide, le réseau tombe. Jusqu'ici, tes bugs venaient de ton code ; maintenant ils viennent aussi des données des autres — et il faut coder défensivement. Autre friction réelle et assumée : venv sous Windows (activation, quel Python tourne, pip du bon environnement) fait transpirer tout le monde au début. La leçon 09-1 y consacre le temps nécessaire ; ne la survole pas, tout le reste du niveau en dépend. Avertissement sécurité au passage : un script qui renomme ou supprime des fichiers peut faire de vrais dégâts — on teste TOUJOURS sur un dossier bac-à-sable d'abord.
Leçons prévues
Chaque leçon suivra le template 17 sections (lessons/TEMPLATE_LECON.md).
| N° | Titre | Notions couvertes | Statut |
|---|---|---|---|
| 09-1 | pip et environnements virtuels | Pourquoi isoler les dépendances, créer/activer/désactiver un venv (spécificités Windows), pip install, pip list, requirements.txt, vérifier QUEL Python tourne, ne jamais committer le venv | ✅ |
| 09-2 | requests et HTTP GET | Installer requests, faire un GET, codes de statut (200, 404, 429, 500), response.json(), paramètres d'URL, timeout, gérer les échecs réseau avec try/except | ✅ |
| 09-3 | JSON et APIs publiques | Structure JSON ↔ dicts/listes Python, naviguer dans du JSON imbriqué, json.load/json.dump, consommer une API publique réelle (météo, pays…), coder défensif (.get, clés manquantes) | ✅ |
| 09-4 | CSV — lire, écrire, analyser | Module csv (reader, DictReader, writer), en-têtes, types (tout est chaîne !), filtrer et agréger (totaux, moyennes, comptages), produire un CSV de sortie ; introduction honnête : quand passer à pandas (⏩ hors méthode) | ✅ |
| 09-5 | Automatiser de vraies tâches | Parcourir des dossiers avec pathlib.glob, renommage de fichiers en masse (avec dossier bac-à-sable et mode « dry run »), générer un rapport automatique (API/CSV → fichier texte ou CSV), assembler un script d'automatisation complet | ✅ |
Pièges et erreurs emblématiques du niveau
pip installdans le mauvais environnement : la bibliothèque « installée » reste introuvable (ModuleNotFoundError) parce que le venv n'était pas activé, ou que VS Code utilise un autre interpréteur. LE piège du niveau.- Ne pas vérifier le code de statut : appeler
response.json()sur une erreur 404/500 → crash ou données absurdes. On testestatus_code(ouraise_for_status()) AVANT de lire. KeyErrorsur du JSON réel : le champ existe dans l'exemple de la doc, pas dans toutes les réponses. Coder défensif avec.get()et des valeurs par défaut.- Oublier que le CSV ne contient que des chaînes :
"12" + "3"vaut"123"; sommer une colonne sans conversion donne du n'importe quoi silencieux. - Pas de timeout :
requests.get(url)sanstimeout=peut geler le script indéfiniment si le serveur ne répond pas. - Script de renommage lancé sur le vrai dossier du premier coup : fichiers écrasés ou perdus. Toujours : copie bac-à-sable, puis mode « dry run » qui affiche sans agir, puis exécution réelle.
Mini-projets du niveau
Fiches détaillées dans /projects.
- Météo du terminal — interroger une API météo publique et afficher un bulletin propre pour une ville donnée, avec gestion des erreurs réseau.
- Rangeur de dossier Téléchargements — trier/renommer les fichiers d'un dossier par type et par date, avec mode « dry run » obligatoire.
- Rapport de dépenses CSV — lire un CSV de dépenses, calculer totaux par catégorie et par mois, écrire un rapport (texte + CSV de synthèse).
Critères de sortie
- Je sais créer un venv, l'activer, installer un paquet dedans et vérifier que le bon Python l'utilise.
- Je sais générer et utiliser un
requirements.txt. - Je sais faire un GET avec
requests(timeout inclus), vérifier le statut et parser le JSON. - Je sais naviguer dans du JSON imbriqué et survivre à une clé manquante.
- Je sais lire un CSV avec
DictReader, convertir les types, filtrer et agréger, puis écrire un CSV de sortie. - Je sais parcourir un dossier avec
pathlibet transformer des fichiers en masse — après un dry run. - Je sais écrire un script d'automatisation qui gère ses erreurs au lieu de planter à la première surprise.
- Je sais expliquer pourquoi on ne committe jamais un venv ni une clé d'API.
Commit de fin de niveau
git add lessons/level-09-automatisation-apis-donnees
git commit -m "exercises: complete level 09 (automation, APIs, data)"