La manipulation de fichiers est essentielle en Python pour lire, écrire et traiter des données stockées sur le système de fichiers.
📑 Sommaire
📄 Lire un fichier
Utilisez l'instruction with et la fonction open() pour lire le contenu complet d'un fichier :
with open("exemple.txt", "r") as fichier:
contenu = fichier.read()
print(contenu)
L'utilisation de with garantit la fermeture du fichier à la fin du bloc, même en cas d'erreur.
📝 Écrire dans un fichier
Pour écrire dans un fichier (en écrasant son contenu s'il existe déjà) :
with open("exemple.txt", "w") as fichier:
fichier.write("Bonjour monde")
Le mode "w" crée le fichier s'il n'existe pas ou le vide s'il existe déjà.
➕ Ajouter du contenu
Pour ajouter du contenu à la fin d'un fichier existant sans l'écraser :
with open("exemple.txt", "a") as fichier:
fichier.write("\nLigne ajoutée")
Le mode "a" (append) place le curseur à la fin du fichier avant d'écrire.
🔁 Lire ligne par ligne
Pour traiter un fichier ligne par ligne (optimal pour les grands fichiers) :
with open("exemple.txt", "r") as fichier:
for ligne in fichier:
print(ligne.strip())
La méthode strip() élimine les espaces et les retours à la ligne en début et fin de chaîne.
❌ Gérer les erreurs de fichier
Capturez les exceptions spécifiques lors de la manipulation de fichiers :
try:
with open("inexistant.txt") as f:
print(f.read())
except FileNotFoundError:
print("Fichier non trouvé")
D'autres exceptions courantes : PermissionError, IsADirectoryError, etc.
🎁 Bonus : Autres opérations sur les fichiers
Modes d'ouverture combinés
# Mode lecture et écriture binaire
with open("image.png", "rb+") as fichier:
data = fichier.read()
# Manipuler data...
fichier.seek(0) # Revenir au début du fichier
fichier.write(data_modifiée)
Utilisation du module pathlib (Python 3.4+)
from pathlib import Path
# Créer un objet Path
chemin = Path("dossier/sous-dossier/fichier.txt")
# Vérifier si un fichier existe
if chemin.exists():
print("Le fichier existe !")
# Créer des dossiers si nécessaire
chemin.parent.mkdir(parents=True, exist_ok=True)
# Lire/écrire avec pathlib
chemin.write_text("Contenu du fichier")
contenu = chemin.read_text()