2016-02-29 2 views
0

Existe-t-il un moyen pour que Python imprime une instruction lorsqu'un script se termine avec succès?
code exemple serait quelque chose comme:Instruction conditionnelle pour le code de sortie 0 dans Python

if 'code variable' == 0: 
    print "Script ran successfully" 
else: 
    print "There was an error" 

Comment pourrais-je passer la valeur du code de sortie à une variable (par exemple 'variable code')?
Je pense que ce serait une bonne chose à inclure dans un script pour les autres utilisateurs.
Merci.

+0

C'est quelque chose que vous feriez dans l'environnement où vous exécutez le script (par exemple, dans bash), et non dans le script lui-même. – arshajii

Répondre

2

Vous pouvez le faire à partir de la coque - par ex. Bash:

python python_code.py && echo "script exited successfully" || echo "there was an error." 

Vous ne pouvez pas avoir un quelque chose d'écriture de programme comme celui-ci pour lui-même parce qu'il ne sait pas que ce code de sortie jusqu'à ce qu'il ait quitté - à laquelle il ne fonctionne plus pour un rapport l'erreur :-).

Il y a d'autres choses que vous pouvez faire pour proxy ce comportement dans le processus lui-même:

try: 
    main() 
except SystemExit as ext: 
    if ext.code: 
     print ("Error") 
    else: 
     print ("Success") 
    raise SystemExit(ext.code) 
else: 
    print ("Success") 

Cependant, cela ne suffit pas si quelqu'un utilise os._exit - et nous n'attraper sys.exit ici, aucune autre exception susceptible d'entraîner un statut de sortie différent de zéro.

+0

Y at-il un moyen de trouver le code de sortie en python, comme si le code de sortie est 0 ou 1 ou n, attribuer cette valeur à une variable? – Bird

+0

Cette explication a du sens; il faudrait se retourner sur lui-même en courant. – Bird

+1

Malheureusement, ['sys.excepthook()'] (https://docs.python.org/2/library/sys.html#sys.excepthook) n'est pas appelé pour les exceptions 'SystemExit'. Sinon, j'aurais totalement posté une réponse avec ça. :-P (Et non, en utilisant 'atexit' et en vérifiant' sys.exc_info() 'est également inutile). –

1

Il suffit d'écrire print à la fin d'un script s'il est en train de s'exécuter directement de haut en bas. S'il y a une erreur, python arrête le script et votre impression ne sera pas exécutée. Le cas différent est lorsque vous utilisez try pour gérer les exceptions.

Ou faites-vous un script pour runningpython script.py avec try et votre exception vous donnera une exception par exemple pour un fichier ou là où vous souhaitez le stocker/montrer.

+0

Cela a du sens. J'utilisais cette méthode, je ne savais pas si c'était infaillible. – Bird