我阅读了 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 就可以了)并可以访问退出代码。我可以根据退出代码手动检查通过/失败,而不会抛出异常。
谢谢你,艾哈迈德。