Programmation Python

Classe B3 ASO 2025-2026

Module 6

Gestion des Erreurs et Manipulation de Fichiers

Apprendre à écrire du code robuste qui gère les erreurs potentielles et à interagir avec le système de fichiers pour lire et écrire des données.

1. Gestion des Erreurs avec try...except

Le Problème : Que se passe-t-il si votre code rencontre une situation inattendue ? Par exemple, si vous demandez à l'utilisateur un nombre et qu'il tape du texte. Le code age = int(input("Entrez votre âge: ")) plantera avec une ValueError.

La Solution : Le bloc try...except permet d'anticiper ces erreurs.

Analogie : C'est comme un filet de sécurité pour un acrobate. Le bloc try représente la figure risquée. Si l'acrobate tombe, le filet (le bloc except) l'attrape et le spectacle peut continuer.
try: age = int(input("Entrez votre âge: ")) print(f"L'année prochaine, vous aurez {age + 1} ans.") except ValueError: print("Erreur : Veuillez entrer un nombre valide.")

Si l'utilisateur entre du texte, le programme n'échouera plus, mais affichera un message d'erreur clair.

2. Manipulation de Fichiers

Interagir avec des fichiers est une tâche courante. Python rend cela très simple.

La Bonne Pratique : with open(...)

La meilleure manière de travailler avec des fichiers est d'utiliser le mot-clé with. Il garantit que le fichier sera automatiquement fermé à la fin du bloc, même si une erreur se produit.

Écrire dans un Fichier

lignes = ["Première ligne.", "Deuxième ligne.", "Troisième ligne."] # 'w' signifie write (écrire). Attention, cela écrase le fichier s'il existe. with open('mon_fichier.txt', 'w', encoding='utf-8') as f: for ligne in lignes: f.write(ligne + '\n') # \n pour un saut de ligne print("Fichier écrit avec succès !")

Lire depuis un Fichier

print("Lecture du fichier :") try: # 'r' signifie read (lire) with open('mon_fichier.txt', 'r', encoding='utf-8') as f: for ligne in f: # .strip() enlève les espaces et sauts de ligne inutiles print(ligne.strip()) except FileNotFoundError: print("Erreur : Le fichier n'a pas été trouvé.")

En utilisant with open(), votre code est plus sûr et plus propre.

Exercices Pratiques

Exercice 1 : Calculatrice Robuste

Reprenez la calculatrice de l'exercice du Module 2. Modifiez-la pour qu'elle gère deux types d'erreurs : une entrée non numérique (ValueError) et une division par zéro (ZeroDivisionError).

Voir la solution
def calculatrice_robuste(): try: num1 = float(input("Entrez le premier nombre : ")) num2 = float(input("Entrez le second nombre : ")) resultat = num1 / num2 print(f"Le résultat de {num1} / {num2} est {resultat:.2f}") except ValueError: print("Erreur : Veuillez entrer des nombres valides.") except ZeroDivisionError: print("Erreur : La division par zéro est impossible.") if __name__ == "__main__": calculatrice_robuste()

Exercice 2 : Journal d'Événements

Créez une fonction log(message) qui ajoute une ligne à un fichier journal.log. Chaque ligne doit commencer par la date et l'heure actuelles. Le fichier ne doit pas être écrasé à chaque appel.

Voir la solution
import datetime def log(message): """Ajoute un message avec horodatage à la fin du fichier journal.log.""" timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") log_entry = f"[{timestamp}] - {message}\n" # 'a' signifie append (ajouter) with open('journal.log', 'a', encoding='utf-8') as f: f.write(log_entry) if __name__ == "__main__": log("Démarrage de l'application.") log("Une opération importante a été effectuée.") log("Arrêt de l'application.") print("Les événements ont été enregistrés dans journal.log")

Exercice 3 : Compteur de Mots dans un Fichier

Écrivez un programme qui demande le nom d'un fichier à l'utilisateur, lit son contenu, et affiche le nombre total de mots qu'il contient. Le programme doit gérer le cas où le fichier n'existe pas (FileNotFoundError).

Voir la solution
def compter_mots(): nom_fichier = input("Entrez le nom du fichier à analyser (ex: mon_fichier.txt) : ") try: with open(nom_fichier, 'r', encoding='utf-8') as f: contenu = f.read() mots = contenu.split() print(f"Le fichier '{nom_fichier}' contient {len(mots)} mots.") except FileNotFoundError: print(f"Erreur : Le fichier '{nom_fichier}' n'a pas été trouvé.") except Exception as e: print(f"Une erreur inattendue est survenue : {e}") if __name__ == "__main__": compter_mots()

Pour aller plus loin

Source: EvoluNoob