2016-05-12 3 views
2

Есть ли способ установить код выхода в функции, зарегистрированной в модуле atexit и вызывается при выходе? Вызов sys.exit(code) вызывает ошибку и не устанавливает код выхода в нужное значение.Установка кода выхода в обратном вызове 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 

Содержание atexit_test.py:

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

import atexit 
atexit.register(myexit) 
+1

Какая версия Python используется? Я могу воспроизвести его на Python 3.5.1, но он отлично работает (как 'sys.exit', так и повышение' SystemExit') в Python 2.7.10. Можете ли вы использовать правильный тег (python-2.x или python-3.x)? –

+0

@Rogalski Я использую Python 3.5.1. – Melebius

ответ

0

Я могу доказать, тестовый код работает в 2.7.x Python (2.7.6 в моем случае), как сообщает @Rogalski. Поэтому я предположил, что это ошибка Python 3.x и подал сообщение об ошибке: http://bugs.python.org/issue27035