Comment puis-je interrompre l'exécution d'un script Python? [dupliquer]
Question
Double possible:
Fin d'un script Python
J'ai un script Python simple 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.
La solution
Pour quitter un script que 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; aa! erreurs! " et quitte avec un code d’état 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, essayez donc les instructions et le code de nettoyage peuvent être exécutés. La version os._exit () ne le fait pas. Il termine simplement le 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 normal de mettre fin à un processus enfant créé avec un appel à os.fork (). Il est donc utile dans certaines circonstances.
Autres conseils
import sys
sys.exit()
Vous pouvez placer 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 __name__ == "__main__":
#Run as main program
main()
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. Auparavant, je préférais sys.exit, mais je suis récemment passé à la levée de soulager SystemExit, car il semble mieux se démarquer parmi le reste du code (en raison du mot clé raise ).
exit () devrait faire l'affaire
exit () devrait le faire.
Essayez
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
Si l'ensemble du programme doit cesser d'utiliser sys.exit (), utilisez simplement un retour vide.