2012-12-09 3 views
0

Я использую питон запустить внешнюю программу следующимполучить ошибку при вызове вызова() в Python

call("/usr/sbin/snif") 

и я получаю

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/usr/lib/python2.6/subprocess.py", line 480, in call 
return Popen(*popenargs, **kwargs).wait() 
File "/usr/lib/python2.6/subprocess.py", line 633, in __init__ 
errread, errwrite) 
File "/usr/lib/python2.6/subprocess.py", line 1139, in _execute_child 
raise child_exception 
OSError: [Errno 2] No such file or directory 

Как получить последнюю строку, которая говорит:

«нет такого файла или каталога»

или еще лучше, как я знаю, если исполнение удалось или нет?

Благодаря

+0

' snif' не является скриптом Python, не так ли? Кроме того, вы уверены, что это 'snif', а не' sniff'? – Blender

+0

это не ... его не существует .. Я просто хотел посмотреть, как я могу получить ошибку –

+0

Вопрос не в том, почему я получаю ошибку, но как я могу получить последнюю строку ... или получить -1 флаг, если он не работает или так –

ответ

1

Вы можете поймать ошибку:

try: 
    call('/usr/sbin/snif') 
except OSError: 
    print "It didn't execute" 

Если вы хотите увидеть, если команда выполнена правильно, используйте check_output или check_call вместо этого и поймать другую ошибку:

import subprocess: 

try: 
    subprocess.check_output('/usr/sbin/snif') 
except OSError: 
    print 'That file does not exist' 
except subprocess.CalledProcessError: 
    print 'Bad exit code' 
+0

«Объект« module »не имеет атрибута« check_output »« –

+0

@ user1432779: эта функция не существует в Python 2.6. Вы можете использовать [этот код] (https://gist.github.com/1027906) как взломать его. – Blender

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