2008-10-07 5 views
105

Possible en double:
Terminating a Python scriptComment abandonner l'exécution d'un script Python?

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

Par exemple:

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

Essentiellement, je suis à la recherche de quelque chose qui se comporte de manière équivalente au mot-clé « retour » dans le corps d'une fonction qui permet l'écoulement du code pour quitter la fonction et non exécuter le code restant.

Répondre

183

Pour sortir d'un script que vous pouvez utiliser,

import sys 
sys.exit() 

Vous pouvez également fournir une valeur d'état de sortie, généralement un nombre 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 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, alors essayez les instructions et le code de nettoyage peut s'exécuter. La version de os._exit() ne le fait pas. Il ne fait que terminer le programme sans effectuer de nettoyage ou de vidage des tampons de sortie, il ne devrait donc normalement pas être utilisé.

Le Python docs indique que os._exit() est la manière normale de terminer un processus enfant créé avec un appel à os.fork(), il a donc une utilité dans certaines circonstances.

+0

'sys.stdout.flush()' associé à 'os._exit (0)' était exactement ce dont j'avais besoin. Merci! – Anconia

4

sortie() devrait faire l'affaire

+0

Trois secondes plus vite que moi: P – Dana

+3

Et je l'ai même testé dans un shell d'abord :-) – Sec

+0

Merde, je n'ai pas voir cela/réagir dans le temps (a été également tester dans l'interprète pour être sûr) * shakes fist *;) – Runevault

3

exit() devrait le faire.

3

Si l'ensemble du programme doit s'arrêter, utilisez sys.exit() sinon, utilisez simplement un retour vide.

+0

'return' ne fonctionnera pas en dehors d'une fonction. – unfa

16
import sys 
sys.exit() 
13

Vous pouvez mettre le corps de votre script dans une fonction et ensuite vous pouvez 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() 
11

Vous pouvez utiliser:

import sys 
sys.exit(...) 

ou:

raise SystemExit(...) 

Le paramètre optionnel 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 passé récemment à élever SystemExit, parce qu'il semble se distinguer mieux parmi le reste du code (en raison du soulever le mot-clé).

0

Essayez

sys.exit("message") 

Il 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é à partir d'un module/def/fonction importé

+3

aucune des réponses n'a suggéré une telle approche? – SilentGhost

Questions connexes