Comment arrêter un script Python si une condition n’est pas vérifiée ?

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

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