- À propos de sys.exit()
- Quitter simplement un programme avec sys.exit()
- Utiliser un code de sortie avec sys.exit()
- Quitter un programme avec un message d'erreur
- Utiliser sys.exit() dans une condition
- Utiliser sys.exit() dans une fonction
- Utiliser sys.exit() avec les arguments de la ligne de commande
- Comprendre l'exception SystemExit
- Différence entre sys.exit(), return et break
- À retenir
1. À propos de sys.exit()
Le module sys fournit plusieurs fonctions permettant d'interagir avec l'environnement d'exécution de Python. La fonction sys.exit() permet de demander l'arrêt du programme en cours d'exécution.
Elle est particulièrement utile lorsqu'une condition indispensable n'est pas satisfaite, lorsqu'une erreur empêche la poursuite du programme ou lorsqu'un script en ligne de commande doit retourner un code de sortie.
Le programme suivant importe le module sys puis utilise sys.exit() pour arrêter immédiatement l'exécution.
1 2 3 4 5 | import sys print("Début du programme") sys.exit() print("Fin du programme") |
Sortie :
1 | Début du programme |
L'instruction située après sys.exit() n'est pas exécutée puisque le programme a été interrompu.
2. Quitter simplement un programme avec sys.exit()
Appeler sys.exit() sans argument permet de terminer normalement le programme. Dans ce cas, le code de sortie associé correspond à une terminaison réussie.
Le programme suivant affiche un message avant de quitter.
1 2 3 4 | import sys print("Traitement terminé.") sys.exit() |
Sortie :
1 | Traitement terminé. |
Il est également possible d'écrire explicitement sys.exit(0). Par convention, le code 0 signifie généralement que le programme s'est terminé correctement.
1 2 3 4 | import sys print("Opération réussie.") sys.exit(0) |
Sortie :
1 | Opération réussie. |
3. Utiliser un code de sortie avec sys.exit()
La fonction sys.exit() peut recevoir un entier représentant le code de sortie du programme. Ce code peut ensuite être récupéré par le système d'exploitation, un terminal ou un autre programme ayant lancé le script.
Par convention, 0 indique généralement une exécution réussie, tandis qu'une valeur différente de zéro indique généralement une erreur ou une situation particulière.
Le programme suivant se termine avec le code 1.
1 2 3 4 | import sys print("Une erreur est survenue.") sys.exit(1) |
Sortie affichée :
1 | Une erreur est survenue. |
Le code 1 n'est pas nécessairement affiché à l'écran. Il est transmis comme état de sortie du processus.
Sous Windows PowerShell, nous pouvons par exemple consulter le code de sortie du dernier programme natif avec $LASTEXITCODE. Après l'exécution du script précédent, nous pouvons saisir :
1 2 | python programme.py $LASTEXITCODE |
Sortie possible :
1 2 | Une erreur est survenue. 1 |
4. Quitter un programme avec un message d'erreur
La fonction sys.exit() peut également recevoir une chaîne de caractères. Python affiche alors ce message sur le flux d'erreur standard et termine le programme avec un état de sortie non nul.
Le programme suivant arrête l'exécution en fournissant directement un message.
1 2 3 | import sys sys.exit("Erreur : fichier introuvable.") |
Sortie :
1 | Erreur : fichier introuvable. |
Cette écriture est pratique pour les petits scripts lorsqu'une erreur empêche complètement la poursuite du programme.
Nous pouvons par exemple vérifier l'existence d'un fichier avant de continuer.
1 2 3 4 5 6 7 8 9 | import sys from pathlib import Path fichier = Path("cours.txt") if not fichier.is_file(): sys.exit("Erreur : le fichier cours.txt n'existe pas.") print("Le fichier existe.") |
Sortie possible si le fichier n'existe pas :
1 | Erreur : le fichier cours.txt n'existe pas. |
5. Utiliser sys.exit() dans une condition
sys.exit() est souvent utilisé avec une structure conditionnelle if. Le programme peut ainsi vérifier une condition avant de poursuivre son traitement.
Dans l'exemple suivant, le programme demande l'âge de l'utilisateur et s'arrête si la valeur saisie est négative.
1 2 3 4 5 6 7 8 | import sys age = int(input("Entrez votre âge : ")) if age < 0: sys.exit("Erreur : l'âge ne peut pas être négatif.") print("Âge enregistré :", age) |
Sortie possible :
1 2 | Entrez votre âge : -5 Erreur : l'âge ne peut pas être négatif. |
Si la condition n'est pas satisfaite, sys.exit() n'est pas exécuté et le programme continue normalement.
1 2 3 4 5 6 7 8 | import sys nombre = 25 if nombre < 0: sys.exit("Le nombre doit être positif.") print("Nombre accepté :", nombre) |
Sortie :
1 | Nombre accepté : 25 |
6. Utiliser sys.exit() dans une fonction
Une instruction sys.exit() peut être utilisée à l'intérieur d'une fonction. Contrairement à return, qui termine seulement l'appel de la fonction courante, sys.exit() demande l'arrêt du programme entier lorsqu'elle n'est pas interceptée.
Le programme suivant arrête l'exécution depuis une fonction lorsqu'un diviseur vaut zéro.
1 2 3 4 5 6 7 8 9 | import sys def division(a, b): if b == 0: sys.exit("Erreur : division par zéro.") return a / b print(division(20, 0)) print("Fin du programme") |
Sortie :
1 | Erreur : division par zéro. |
La deuxième instruction print() n'est pas exécutée puisque sys.exit() interrompt le déroulement normal du programme.
Si le diviseur est différent de zéro, la fonction retourne normalement son résultat.
1 2 3 4 5 6 7 8 9 | import sys def division(a, b): if b == 0: sys.exit("Erreur : division par zéro.") return a / b print(division(20, 4)) print("Fin du programme") |
Sortie :
1 2 | 5.0 Fin du programme |
7. Utiliser sys.exit() avec les arguments de la ligne de commande
sys.exit() est particulièrement utile avec sys.argv. Nous pouvons arrêter un script lorsque l'utilisateur n'a pas fourni le nombre d'arguments attendu.
Le programme suivant attend deux nombres dans la ligne de commande. Si le nombre d'arguments est incorrect, le programme affiche la syntaxe attendue puis s'arrête.
1 2 3 4 5 6 7 8 9 | import sys if len(sys.argv) != 3: sys.exit("Utilisation : python programme.py nombre1 nombre2") a = float(sys.argv[1]) b = float(sys.argv[2]) print("Somme :", a + b) |
Si le programme est exécuté sans argument :
1 | python programme.py |
Sortie :
1 | Utilisation : python programme.py nombre1 nombre2 |
Lorsque les deux arguments sont correctement fournis, le programme poursuit son exécution.
1 | python programme.py 15 25 |
Sortie :
1 | Somme : 40.0 |
8. Comprendre l'exception SystemExit
Techniquement, sys.exit() ne termine pas brutalement l'interpréteur. Elle déclenche une exception spéciale appelée SystemExit. Si cette exception remonte sans être interceptée, Python termine normalement le processus.
Le programme suivant permet d'observer ce fonctionnement en interceptant volontairement SystemExit.
1 2 3 4 5 6 7 8 | import sys try: sys.exit(2) except SystemExit as erreur: print("Code reçu :", erreur.code) print("Le programme continue.") |
Sortie :
1 2 | Code reçu : 2 Le programme continue. |
Dans cet exemple, le programme continue uniquement parce que l'exception SystemExit a été interceptée.
Un bloc finally est normalement exécuté pendant la propagation de SystemExit. Cela permet notamment d'effectuer certaines opérations de nettoyage avant la fin du programme.
1 2 3 4 5 6 7 | import sys try: print("Traitement en cours...") sys.exit(0) finally: print("Nettoyage avant la fermeture.") |
Sortie :
1 2 | Traitement en cours... Nettoyage avant la fermeture. |
9. Différence entre sys.exit(), return et break
Les instructions sys.exit(), return et break interrompent toutes un traitement, mais elles n'ont pas la même portée.
- break termine uniquement la boucle dans laquelle elle se trouve.
- return termine l'exécution de la fonction courante et peut retourner une valeur.
- sys.exit() déclenche SystemExit afin de demander la terminaison du programme.
Le programme suivant montre que break quitte uniquement la boucle. Les instructions situées après celle-ci continuent à être exécutées.
1 2 3 4 5 6 | for i in range(5): if i == 2: break print(i) print("Fin du programme") |
Sortie :
1 2 3 | 0 1 Fin du programme |
Dans l'exemple suivant, return termine uniquement la fonction test(). Le programme continue ensuite son exécution.
1 2 3 4 5 6 7 | def test(): print("Dans la fonction") return print("Cette ligne n'est pas exécutée") test() print("Fin du programme") |
Sortie :
1 2 | Dans la fonction Fin du programme |
Avec sys.exit(), l'exécution normale du programme est interrompue si l'exception SystemExit n'est pas interceptée.
1 2 3 4 5 | import sys print("Début") sys.exit() print("Fin") |
Sortie :
1 | Début |
10. À retenir
La fonction sys.exit() du module sys permet de demander l'arrêt d'un programme Python. Elle est particulièrement utile dans les scripts, les programmes en ligne de commande et les situations où une erreur empêche la poursuite du traitement.
- sys.exit() demande l'arrêt du programme.
- sys.exit(0) indique généralement une terminaison réussie.
- Un code différent de zéro indique généralement une erreur ou une situation particulière.
- sys.exit("message") permet de terminer le programme avec un message d'erreur.
- sys.exit() peut être utilisée dans une condition ou dans une fonction.
- Elle est fréquemment combinée avec sys.argv dans les programmes en ligne de commande.
- sys.exit() déclenche en réalité l'exception SystemExit.
- SystemExit peut être interceptée, même si cela n'est généralement pas nécessaire dans un script simple.
- return termine une fonction tandis que break termine une boucle.
- sys.exit() ne doit pas être confondue avec un arrêt brutal du processus : elle permet notamment l'exécution normale des blocs finally.
Le programme suivant rassemble un usage classique de sys.exit() : vérifier les arguments, contrôler leur validité et retourner un code adapté.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import sys if len(sys.argv) != 2: sys.exit("Utilisation : python programme.py age") try: age = int(sys.argv[1]) except ValueError: sys.exit("Erreur : l'âge doit être un entier.") if age < 0: sys.exit("Erreur : l'âge ne peut pas être négatif.") print("Âge enregistré :", age) sys.exit(0) |
Exécutons le programme avec :
1 | python programme.py 25 |
Sortie :
1 | Âge enregistré : 25 |
Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


