2016-01-28 3 views
1

У меня есть, по-видимому старую версию питона, и когда я пытаюсь использоватьпитон 2.4.3 подпроцесс check_call

subprocess.check_call(...) 

возвращается ошибка говорить, что check_call не существует. Есть ли эквивалент? Кстати ... мне нужно, чтобы понять, какая строка вызывается, когда я использую subprocess.call(...)

+0

Вы можете использовать этот порт https://pypi.python.org/pypi/subprocess32/ –

+0

Какая версия python? check_call для 2.5 и выше –

+0

Почему бы вам не обновить Python до версии, выпущенной менее десяти лет назад ?! – jonrsharpe

ответ

0

Вы должны быть в состоянии использовать call в check_call на самом деле является оболочкой для subprocess.call(), которая существует в Python 2.4. Вы можете написать свой собственный check_call функцию:

(Внимание: это не испытывается, как у меня нет Python 2.4):

class CalledProcessError(Exception): 
    def __init__(self, returncode, cmd, output=None): 
     self.returncode = returncode 
     self.cmd = cmd 
     self.output = output 
    def __str__(self): 
     return "Command '%s' returned non-zero exit status %d" % (self.cmd, self.returncode) 

def check_call(*popenargs, **kwargs): 
    retcode = subprocess.call(*popenargs, **kwargs) 
    if retcode: 
     cmd = kwargs.get("args") 
     if cmd is None: 
      cmd = popenargs[0] 
     raise CalledProcessError(retcode, cmd) 
    return 0 

и вместо subprocess.check_call(...) вы можете просто вызвать свой собственный check_call(...) используя тот же аргументы.

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