Introduction
Arrêter un script Python avant la fin peut être utile dans de nombreux cas :
- données invalides
- fichier manquant
- erreur logique
- seuil dépassé
- mauvaise configuration
- sécurité ou valeurs critiques
Table des matières
- Introduction
- La méthode recommandée : sys.exit()
- Arrêter un script en affichant un message
- Utiliser un code de sortie (débutant-friendly)
- Arrêter un script dans une boucle
- Arrêter si un fichier n’existe pas
- Arrêter dans une fonction
- Erreurs courantes à éviter
- Alternatives avancées
- sys.exit() vs quit() vs exit()
- Références
Dans ce tutoriel, tu vas apprendre les méthodes simples et propres pour stopper un script, avec les erreurs à éviter.
La méthode recommandée : sys.exit()
La manière officielle et la plus propre pour arrêter un script Python est d’utiliser :
1 | sys.exit() |
Mais avant, il faut importer le module sys :
1 | import sys |
Exemple simple
1 2 3 4 5 6 7 | import sys x = 10 if x > 5: print("x est trop grand, arrêt du script.") sys.exit() |
Résultat : le programme s'arrête immédiatement.
Arrêter un script en affichant un message
Tu peux afficher un message avant d’arrêter :
1 2 3 4 | import sys if not True: sys.exit("Erreur : la condition n'est pas vérifiée.") |
Sortie :
1 | Erreur : la condition n'est pas vérifiée. |
Utiliser un code de sortie (débutant-friendly)
Dans les systèmes (Linux/macOS/Windows), un programme renvoie souvent un code de sortie.
0= tout va bien- autre nombre = erreur (1, 2, 3…)
Exemple :
1 | sys.exit(1) |
Cela arrête le script et indique "erreur" à l’OS.
Arrêter un script dans une boucle
Exemple classique pour débutants :
1 2 3 4 5 6 | import sys for i in range(10): print(i) if i == 4: sys.exit("Fin de la boucle") |
Arrêter si un fichier n’existe pas
Très fréquent dans les scripts :
1 2 3 4 5 | import os import sys if not os.path.exists("data.csv"): sys.exit("Erreur : fichier data.csv introuvable.") |
Arrêter dans une fonction
1 2 3 4 5 6 7 8 | import sys def verifie_age(age): if age < 18: sys.exit("Accès refusé : vous devez avoir 18 ans.") print("Accès autorisé.") verifie_age(12) |
Erreurs courantes à éviter
Voici les pièges les plus fréquents :
ERREUR 1 : utiliser quit() ou exit() dans un vrai script
1 2 | quit() exit() |
Ces fonctions sont réservées à l’interpréteur (IDLE, REPL).
Elles ne sont pas fiables dans un script professionnel.
Solution :
1 | sys.exit() |
ERREUR 2 : oublier import sys
1 | sys.exit() # NameError ! |
Toujours penser à :
1 | import sys |
ERREUR 3 : essayer de stopper un script dans un try/except sans relancer l’exception
Exemple problématique :
1 2 3 4 | try: sys.exit() except: pass # bloque l'arrêt ! |
Le script ne s’arrêtera pas !
Solution :
1 2 3 4 | try: sys.exit() except SystemExit: raise |
ERREUR 4 : utiliser un return dans un script principal
Exemple :
1 2 | if error: return # SyntaxError en dehors d'une fonction |
return ne fonctionne que dans une fonction, pas dans un script global.
Utiliser :
1 | sys.exit() |
ERREUR 5 : penser que break arrête le script
break arrête seulement la boucle, pas le script entier.
Exemple :
1 2 3 | for i in range(10): if i == 3: break # boucle stop, mais le script continue ! |
Alternatives avancées
Lever l'exception SystemExit manuellement
1 | raise SystemExit("Arrêt programmé.") |
Equivalent à sys.exit() — utile dans des cas avancés.
sys.exit() vs quit() vs exit()
| Fonction | À utiliser ? | Notes |
|---|---|---|
sys.exit() |
Oui | Méthode officielle et recommandée |
quit() |
Non | Réservé à l’interpréteur interactif (IDLE) |
exit() |
Non | Identique à quit(), pas pour la production |
raise SystemExit |
Oui | Équivalent avancé de sys.exit() |
Références
| Liens | Site |
|---|---|
| https://docs.python.org/3/library/sys.html | Python Docs – Module sys |
| https://docs.python.org/3/library/exceptions.html#SystemExit | Python Docs – Exception SystemExit |
| https://stackoverflow.com/questions/179369/how-do-i-abort-the-execution-of-a-python-script | StackOverflow — How to abort a script |
| https://stackoverflow.com/questions/73663/terminating-a-python-script | StackOverflow — Terminating a Python script |
