从subprocess.check_output获取退出代码

2 投票
1 回答
4128 浏览
提问于 2025-04-18 07:18

我该如何获取subprocess.check_output的退出代码呢?
我假设如果找到了符合我模式的文件,返回的代码应该是0;如果没有找到符合模式的文件,返回的代码应该是非零的,对吧?
如果出现异常,我会收到一个非零的返回代码,这也是我预期的结果。

try:
        output = subprocess.check_output(["staf", "server.com", "PROCESS", "START", "SHELL", "COMMAND", "ls *heapdump*", "WAIT", "RETURNSTDOUT", "STDERRTOSTDOUT"])
        print result
except CalledProcessError as e:
        print(e.returncode)
        sys.exit(e.returncode)

1 个回答

4

就像文档里说的:

如果返回的代码不是零,就会抛出一个叫做CalledProcessError的错误。这个CalledProcessError对象会在returncode属性里包含返回的代码,而在output属性里包含任何输出信息。

所以,如果你没有进入except块,就可以认为返回的是0。你已经在正确地处理非零返回代码了。

撰写回答