web-dev-qa-db-fra.com

Comment puis-je interrompre l'exécution d'un script Python?

Duplicate possible:
Terminaison d'un script Python

J'ai un simple script Python que je veux arrêter d'exécuter si une condition est remplie.

Par exemple:

done = True
if done:
    # quit/stop/exit
else:
    # do other stuff

Essentiellement, je recherche quelque chose qui se comporte de manière équivalente au mot clé "return" dans le corps d'une fonction, ce qui permet au flux de code de quitter la fonction sans exécuter le code restant.

142
Ray Vega

Pour quitter un script, vous pouvez utiliser,

import sys
sys.exit()

Vous pouvez également fournir une valeur de statut de sortie, généralement un entier.

import sys
sys.exit(0)

Sorties avec zéro, ce qui est généralement interprété comme un succès. Les codes non nuls sont généralement traités comme des erreurs. La valeur par défaut est de quitter avec zéro.

import sys
sys.exit("aa! errors!")

Imprime "aa! Erreurs!" et sort avec un code de statut de 1.

Il existe également une fonction _exit () dans le module os. La fonction sys.exit () déclenche une exception SystemExit pour quitter le programme. Les instructions try et le code de nettoyage peuvent donc être exécutés. La version os._exit () ne le fait pas. Cela met simplement fin au programme sans nettoyage ni vidage des tampons de sortie, il ne devrait donc normalement pas être utilisé.

Les documents Python indiquent que os._exit () est le moyen habituel de terminer un processus enfant créé avec un appel à os.fork (). Il est donc utile dans certaines circonstances.

242
ryan_s
import sys
sys.exit()
18
gimel

Vous pouvez mettre le corps de votre script dans une fonction, puis revenir de cette fonction.

def main():
  done = True
  if done:
    return
    # quit/stop/exit
  else:
    # do other stuff

if __== "__main__":
  #Run as main program
  main()
17
David Locke

Vous pouvez soit utiliser:

import sys
sys.exit(...)

ou:

raise SystemExit(...)

Le paramètre facultatif peut être un code de sortie ou un message d'erreur. Les deux méthodes sont identiques. J'avais l'habitude de préférer sys.exit, mais je suis récemment passé à la levée de SystemExit, car il semble mieux ressortir du reste du code (en raison du mot clé raise).

14
efotinis

exit () devrait faire l'affaire

4
Sec

Essayer

sys.exit("message")

C'est comme le Perl

die("message")

si c'est ce que vous recherchez. Il termine l'exécution du script même s'il est appelé depuis un module importé/def/function

3
GabrieleV

exit () devrait le faire.

3
Dana

Si le programme entier doit cesser d'utiliser sys.exit (), utilisez simplement un retour vide.

2
André