2016-09-14 4 views
2

У меня есть скрипт python, который будет выполнять некоторые действия и в зависимости от результата выйдет с кодом 0 (все в порядке) или 1 (не хорошо).Получить код статуса выхода из Python

Я хочу поймать этот результат, сохранить его в переменной и отправить его по UDP. Это невозможно сделать внутри скрипта python (требование).

Так скажем, мой сценарий что-то вроде:

import sys 
# Do some stuff 
sys.exit(0) # or sys.exit(1) 

Что я бегу с python script.py.

Как я могу получить этот код статуса выхода (0 или 1).

Я пытаюсь эхо-сигнал $errorlevel, но он печатает пустую строку. Также попробуйте использовать exit(0) вместо sys.exit() (см. here) и некоторые другие неудачные попытки.

+6

'sys.exit (0)' - правильный способ отправить код возврата в оболочку. Но вы не сказали, какую ОС или оболочку вы используете. В bash & подобных оболочках '$?' Имеет код выхода последней команды. –

+0

«Что я запускаю с python * script.sh **.», Разве вы не имели в виду «Что я запускаю с python script.py»? –

+0

Да, извините .py – Mornor

ответ

2

Поскольку согласно вашему ответу вы используете zsh

test.py

import os 
os.exit(12) 

в консоли

python test.py 
RC=$? 
echo "Exit code $RC" 
program_to_send $RC 
0

Это вопрос сценария, а не вопрос python, но в оболочке Bash вы используете $? и поскольку любая команда изменяет $?, обычно рекомендуется сохранять копию.

python script.py 
RC=$? 

echo $RC 
[ $RC == 0 ] && echo Success || echo Failed 
# replace above lines by whatever you need to send $RC via UDP ... 

Если это вопрос с сценарием Windows CMD, вероятно, вам следует переписать его с соответствующими тегами. (Я не делаю Windoze больше, спасибо $ БОЖЕСТВО)

+0

[Код выхода для Windows] (http://stackoverflow.com/questions/334879). –

-1

Это нужно сделать правильно, перехватив исключения и используя регистратор.

import logging, time 

logging.basicConfig(level=logging.DEBUG, filename='/path/to/file/errorlog.log') 

try: 
    #MySQL Connection 
except MySQLdb.Error as e: 
    errortime = time.strftime('%Y-%m-%dT%H:%M:%S') 
    logging.exception(errortime) 
    raise os._exit(0) 
Смежные вопросы