【发布时间】:2013-04-18 09:23:12
【问题描述】:
我阅读了 subprocess 提供的函数 - call、check_call、check_output,并了解了每个函数的工作原理和功能上的不同。我目前使用的是check_output,所以我可以访问stdout,并使用“try block”来捕获异常,如下:
# "cmnd" is a string that contains the command along with it's arguments.
try:
cmnd_output = check_output(cmnd, stderr=STDOUT, shell=True, timeout=3, universal_newlines=True);
except CalledProcessError:
print("Status : FAIL")
print("Output: \n{}\n".format(cmnd_output))
我遇到的问题是当抛出异常时,“cmnd_output”未初始化且无权访问 stderr,我收到以下错误消息:
print("Output: \n{}\n".format(cmnd_output))
UnboundLocalError: local variable 'cmnd_output' referenced before assignment
我认为这是因为异常导致“check_output”立即退出,无需任何进一步处理,也就是在 try 块中分配给“cmnd_output”。如果我错了,请纠正我。
有什么方法可以让我访问 stderr(如果它被发送到 stout 就可以了)并可以访问退出代码。我可以根据退出代码手动检查通过/失败,而不会抛出异常。
谢谢你, 艾哈迈德。
【问题讨论】:
标签: python python-3.x