2016-05-12 2 views
2

Y a-t-il un moyen de définir le code de sortie dans la fonction enregistrée dans le module atexit et appelé à la sortie? L'appel à sys.exit(code) génère une erreur et ne définit pas le code de sortie à la valeur souhaitée.Définition du code de sortie dans un rappel atexit

d:\>python atexit_test.py 
Error in atexit._run_exitfuncs: 
Traceback (most recent call last): 
    File "atexit_test.py", line 3, in myexit 
    sys.exit(2) 
SystemExit: 2 

d:\>echo %ERRORLEVEL% 
0 

Le contenu de atexit_test.py:

def myexit(): 
    import sys 
    sys.exit(2) 

import atexit 
atexit.register(myexit) 
+1

Quelle version de Python est utilisée? Je peux le reproduire sur Python 3.5.1, mais cela fonctionne très bien (à la fois 'sys.exit' et 'SystemExit') dans Python 2.7.10. Pouvez-vous utiliser la balise correcte (python-2.x ou python-3.x)? –

+0

@Rogalski J'utilise Python 3.5.1. – Melebius

Répondre

0

je peux prouver le code de test fonctionne en Python 2.7.x (2.7.6 dans mon cas), tel que rapporté par @Rogalski. J'ai donc supposé que c'était un bug de Python 3.x et j'ai déposé un rapport de bogue: http://bugs.python.org/issue27035