2009-11-08 3 views
20

Я не уверен, что означает возвращаемое значение subprocess.call().Каково возвращаемое значение subprocess.call()?

  • Могу ли я считать, что нулевое значение всегда означает, что команда выполнена успешно?

  • Является ли возвращаемое значение эквивалентным для выхода из команды оболочки?

Например, будет ли выполняться следующий фрагмент кода практически для любой команды в Linux?

cmd = "foo.txt > bar.txt" 
ret = subprocess.call(cmd, shell=True) 
if ret != 0: 
    if ret < 0: 
     print "Killed by signal", -ret 
    else: 
     print "Command failed with return code", ret 
else: 
    print "SUCCESS!!" 

Пожалуйста, просветите меня :-)

ответ

7

Это код возврата, но имейте в виду, что до автора подпроцесса, что означает, что код возврата. Существует сильная культура 0, означающая успех, но ее нет.

4

Вы находитесь во власти команд, которые вы вызываете. Рассмотрим это:

test.py

#!/usr/bin/env python 
success=False 
if not success: 
    exit() 

Затем работает ваш код (с CMD = 'test.py') приведет к УСПЕХА !!

просто потому, что test.py не соответствует соглашению о возврате ненулевого значения, когда оно не выполняется.

Смежные вопросы