I/O Fichiers
Progression
#Fichiers (I/O)
À quoi ça sert ?
À quoi ça sert: persister et échanger des données. Comment: ouvrir avec le bon mode/encodage, utiliser des context managers, manipuler des chemins de façon portable et gérer proprement les erreurs. En environnement Pyodide, le FS est virtuel en mémoire mais les principes restent valables.
Objectifs d’apprentissage
- Lire/écrire des fichiers en gérant encodage/erreurs et chemins portables.
- Utiliser les context managers pour garantir la fermeture.
- Manipuler JSON/CSV de façon sûre (flux, exceptions).
pythonpython
1with open('demo.txt','w', encoding='utf-8') as f:2 f.write('demo')3print(open('demo.txt', encoding='utf-8').read())
Lecture ligne à ligne et gestion d’erreurs:
pythonpython
1try:2 with open('donnees.csv', encoding='utf-8') as f:3 for line in f:4 print(line.strip())5except FileNotFoundError:6 print('Fichier absent — créez-le d\'abord')
Chemins portables et encodage:
pythonpython
1from pathlib import Path2base = Path('.')3data_dir = base / 'data'4data_dir.mkdir(exist_ok=True)5fpath = data_dir / 'demo.txt'6fpath.write_text('café', encoding='utf-8')7print(fpath.read_text(encoding='utf-8'))
#Playground
Chargement de l’éditeur...
#Exercices
- Lire un CSV simple
a,b,c
et calculer la moyenne de la colonnec
. - Écrire un mini journaliseur qui ajoute des lignes datées dans un fichier texte.
#Pièges fréquents
- Oublier l’encodage explicite (
utf-8
) → caractères corrompus selon plateforme. - Ne pas fermer le fichier (éviter
open(...).read()
sanswith
en production). - Ecraser un fichier par erreur: sécuriser avec
exist_ok=False
ou des suffixes de sauvegarde.
#Quiz éclair
Quelle option évite un encodage corrompu multi‑plateformes ?