File Handling en Python
Fiche de révision complète — Python I / IDS
Qu'est-ce que le File Handling ?
Le file handling = manipulation de fichiers sur le disque dur depuis Python.
On peut : lire, écrire, modifier, supprimer des fichiers (.txt, .csv, .json…)
Python fournit des fonctions natives + des modules spécialisés (os, csv, json)
La fonction open( )
open(chemin, mode="r", encoding="utf-8")
chemin : chemin vers le fichier (absolu ou relatif)
mode : comment ouvrir le fichier (voir tableau ci-dessous)
encoding : 'utf-8' recommandé pour gérer les accents (é, à…)
Mode Signification Crée si absent ? Écrase ?
"r" Lecture seule (défaut) Non erreur Non
"w" Écriture (write) Oui Oui
"a" Ajout (append) — à la fin Oui Non
"x" Création exclusive — Erreur si existe
"r+" Lecture + écriture Non erreur Non
"rb" Lecture binaire (images, PDF…) Non erreur Non
LeMode
gestionnaire
"w" ÉCRASE lede contexte
fichier with
existant sans avertissement ! Utiliser "a" pour ajouter.
Sans with (à éviter) Avec with (recommandé)
f = open('[Link]', 'r') with open('[Link]','r') as f:
contenu = [Link]() contenu = [Link]()
# Oubli de [Link]() # Fermeture AUTOMATIQUE
# fuite de ressources ! # même si erreur propre !
— 1 / 4 —
Lecture & Écriture de Fichiers
Méthodes de lecture
read() readline() readlines()
Lit TOUT le fichier Lit UNE ligne Lit TOUTES les lignes
en une seule chaîne à la fois retourne une liste
retourne str retourne str lignes[0] = 1ère ligne
Attention : lourd Inclut \\n en fin Chaque élément
pour grands fichiers de ligne contient \\n
Exemples de lecture
with open("[Link]", "r", encoding="utf-8") as f:
# Méthode 1 : tout lire
tout = [Link]()
# Méthode 2 : itération ligne par ligne (la + efficace)
for ligne in f:
print([Link]()) # strip() supprime \n
# Méthode 3 : liste de toutes les lignes
lignes = [Link]() # ["ligne1\n", "ligne2\n"]
Écriture dans un fichier
Méthode Usage Ajoute \n auto ?
[Link](str) Écrit une chaîne Non à ajouter manuellement
[Link](list) Écrit une liste de chaînes Non chaque élément doit avoir \n
Exemples d'écriture
# Mode "w" crée ou écrase
with open("[Link]", "w", encoding="utf-8") as f:
[Link]("Titre du rapport\n")
[Link]("Date: 10/06/2025\n")
# Mode "a" ajoute sans effacer
with open("[Link]", "a", encoding="utf-8") as f:
[Link]("Nouvelle entrée\n")
# writelines() avec une liste
lignes = ["Alpha\n", "Beta\n", "Gamma\n"]
with open("[Link]", "w") as f:
— 2 / 4 —
[Link](lignes)
Gestion des Exceptions & Module os
Gestion des exceptions (try/except)
Toujours protéger les opérations fichier ! Plusieurs erreurs possibles :
FileNotFoundError Le fichier n'existe pas
PermissionError Accès refusé par l'OS
IsADirectoryError C'est un dossier, pas un fichier
OSError Erreur système générale
UnicodeDecodeError Mauvais encodage (ex: utf-8 vs latin-1)
Pattern complet try/except/else/finally
try:
with open("[Link]", "r", encoding="utf-8") as f:
contenu = [Link]()
print(contenu)
except FileNotFoundError:
print(" Fichier introuvable !")
except PermissionError:
print(" Accès refusé !")
except UnicodeDecodeError:
print(" Problème d'encodage essaie encoding=latin-1")
else:
print(" Lecture réussie !") # exécuté si pas d'erreur
finally:
print("Toujours exécuté, erreur ou non") # nettoyage
Module os — Gestion du système de fichiers
Fonction Description Exemple
[Link](p) Vérifie si le chemin existe exists("[Link]") True
[Link](p) Vérifie si c'est un fichier isfile("[Link]") True
[Link](p) Vérifie si c'est un dossier isdir("/home") True
[Link](p) Taille en octets getsize("[Link]") 1024
[Link](p) Nom du fichier seul "[Link]"
[Link](p) Dossier parent "/home/user/projet"
— 3 / 4 —
[Link](d) Liste le contenu du dossier ["[Link]", "[Link]"]
Fichiers CSV & Fichiers JSON
Module csv
CSV (Comma-Separated Values) = fichier texte tabulaire. Très utilisé en data, Excel…
En France : souvent séparé par ';' à cause des virgules dans les nombres.
Classe/Fonction Rôle
[Link](f) Lit le CSV chaque ligne est une liste
[Link](f) Écrit dans le CSV ligne par ligne
[Link](f) Lit chaque ligne est un dictionnaire {colonne: valeur}
[Link](f, …) Écrit depuis des dictionnaires (avec en-têtes)
CSV — Écriture & Lecture
import csv
# Écrire un CSV
with open("[Link]", "w", newline="", encoding="utf-8") as f:
writer = [Link](f, delimiter=";")
[Link](["Nom", "Age", "Note"]) # en-tête
[Link]([["Alice",20,15], ["Karim",22,18]])
# Lire avec DictReader (recommandé)
with open("[Link]", "r", encoding="utf-8") as f:
reader = [Link](f, delimiter=";")
for ligne in reader:
print(f"{ligne['Nom']} {ligne['Note']}/20")
Module json
JSON = format de données texte universel. Idéal pour configs, APIs, échange de données.
Fonction Sens Description
[Link](obj, f) Python fichier Sérialise et écrit dans un fichier
[Link](f) Fichier Python Lit et désérialise depuis un fichier
[Link](obj) Python str Sérialise en chaîne JSON
[Link](s) str Python Désérialise depuis une chaîne
JSON — Sauvegarde & Chargement
import json
# Objet Python quelconque
— 4 / 4 —
config = {"projet": "Robot", "version": 2.1, "capteurs": ["temp","pression"]}