Quitter un programme avec sys.exit() en Python

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.

Sortie :

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.

Sortie :

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.

Sortie :

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.

Sortie affichée :

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 :

Sortie possible :

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.

Sortie :

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.

Sortie possible si le fichier 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.

Sortie possible :

Si la condition n'est pas satisfaite, sys.exit() n'est pas exécuté et le programme continue normalement.

Sortie :

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.

Sortie :

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.

Sortie :

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.

Si le programme est exécuté sans argument :

Sortie :

Lorsque les deux arguments sont correctement fournis, le programme poursuit son exécution.

Sortie :

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.

Sortie :

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.

Sortie :

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.

Sortie :

Dans l'exemple suivant, return termine uniquement la fonction test(). Le programme continue ensuite son exécution.

Sortie :

Avec sys.exit(), l'exécution normale du programme est interrompue si l'exception SystemExit n'est pas interceptée.

Sortie :

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é.

Exécutons le programme avec :

Sortie :

 


 


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/


Leave a Reply

Your email address will not be published. Required fields are marked *