2016-02-17 3 views

ответ

0

os.system() возвращаемое значение зависит от операционной системы. На POSIX и, возможно, на некотором Windows, это будет работать:

retval = os.system(command) 
print "command return value is %d" % (retval >> 8) 

Там нет исключений для обработки там, только возвращение оболочки значения. Сдвиг бит происходит потому, что кто-то думал, что было бы полезно вернуть несколько вещей в одну переменную (первые 8 бит - это сигнал, который убил команду).

Возможно, вы захотите посмотреть на модуль подпроцесса вместо os.system(): он дает вам больше контроля (включая исключение из ненулевого возвращаемого значения, если вы используете subprocess.check_call() или subprocess.check_output(), даже если это не очень полезно: вам все равно нужно проверить возвращаемое значение оболочки, чтобы узнать, в чем проблема).

+0

'child_traceback' является полезным один также для подпроцесса. –

+0

К сожалению, возвращаемое значение совпадает с нулевым, либо если файл успешно передан, а также если сервер находится в автономном режиме и соединение не установлено. – Demetris

0

Хотя ниже должен работать, read about os.system() and os.wait() here

import os 
import sys 

# Saving os.system return_value 
# See explanation for os.system(), os.wait() regarding the 2 different bytes received 

ret_val = os.system(command) 

# Exiting with ret_val, after shifting the lower irrelevant 8 bits 
# (the lower 8 bits of os.wait() is the kill signal for the command) 

sys.exit(ret_val >> 8) 
Смежные вопросы