Aller au contenu principal

I/O Fichiers

Progression

#Fichiers (I/O)

La manipulation de fichiers permet de persister des données et d'échanger des informations entre programmes ou sessions. En Python, il est essentiel d'ouvrir les fichiers avec le bon mode et encodage, d'utiliser des context managers pour garantir leur fermeture automatique, de manipuler les chemins de façon portable avec pathlib, et de gérer proprement les erreurs d'accès. Bien qu'en environnement Pyodide le système de fichiers soit virtuel et réside en mémoire, les principes et les bonnes pratiques restent identiques.

Objectifs d'apprentissage

  • Lire et écrire des fichiers en gérant correctement l'encodage, les erreurs et les chemins portables.
  • Utiliser systématiquement les context managers (with) pour garantir la fermeture des fichiers.
  • Manipuler des formats structurés comme JSON et CSV de manière sûre, en utilisant des flux et en gérant les exceptions.
pythonpython
1with open('demo.txt','w', encoding='utf-8') as f:2    f.write('demo')3print(open('demo.txt', encoding='utf-8').read())

La lecture ligne à ligne est particulièrement efficace pour traiter de gros fichiers sans charger tout le contenu en mémoire. Il est important de gérer les erreurs courantes comme l'absence du fichier avec des blocs try/except appropriés :

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')

Le module pathlib offre une interface orientée objet pour manipuler les chemins de fichiers de manière portable entre systèmes d'exploitation. Il simplifie les opérations courantes comme la création de répertoires, la concaténation de chemins et la lecture/écriture de contenu, tout en garantissant la spécification explicite de l'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

Ces exercices vous permettront de pratiquer la manipulation de fichiers dans différents formats :

  • Lisez un fichier CSV simple au format a,b,c et calculez la moyenne des valeurs de la colonne c.
  • Créez un mini système de journalisation qui ajoute des lignes horodatées dans un fichier texte.

#Pièges fréquents

Plusieurs erreurs classiques peuvent compromettre la fiabilité de la manipulation de fichiers. Oublier de spécifier explicitement l'encodage (par exemple utf-8) peut conduire à des caractères corrompus selon la plateforme. Ne pas fermer correctement les fichiers, notamment en utilisant open(...).read() sans context manager with en production, peut épuiser les descripteurs de fichiers disponibles. Enfin, écraser accidentellement un fichier existant peut être évité en utilisant exist_ok=False lors de la création de répertoires ou en ajoutant des suffixes de sauvegarde automatiques.

#Quiz éclair

Quelle option évite un encodage corrompu multi‑plateformes ?
Quelle option évite un encodage corrompu multi‑plateformes ?