python 2.4.3子进程check_call

时间:2016-01-28 10:25:13

标签: python process

我显然是旧版本的python,当我尝试使用

subprocess.check_call(...)

返回错误,指出check_call不存在。 有同等的吗?顺便说一句......我需要了解当我使用subprocess.call(...)

时调用哪一行

1 个答案:

答案 0 :(得分: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(...)