获取命令的退出代码

Jie*_*Wei 2 python subprocess os.system

例如,我有一个命令 commandA 并希望在执行 commandA 后获取退出代码。CommandA 预计会失败,所以我们应该得到的退出代码是 1。

如果我在终端中输入 command 作为commandA;echo $?,屏幕上会显示 1 。然而,当我用 python 做的时候,事情出错了。

我试图用os.system(commandA)or调用 commandA subprocess.call(commandA.split()),然后调用os.popen('echo $?').read(),结果为 0。

os.popen('commandA;echo $?').read() 给了我一个正确的结果,但是 commandA 的过程没有显示在屏幕上,这是我不希望它发生的。

Tho*_*mas 7

subprocess.call 直接返回退出代码:

exit_code = subprocess.call(commandA.split())
Run Code Online (Sandbox Code Playgroud)

您的尝试echo $?不起作用的原因是echo(通常)和$?(当然)都是 shell 的构造,并且在 Python 中不存在。