我想在Python调用的shell脚本中获取退出状态集。
代码如下
Python脚本
result = os.system("./compile_cmd.sh")
print result
文件 compile_cmd.sh
javac @source.txt
# I do some code here to get the number of compilation errors
if [$error1 -e 0 ]
then
echo "\n********** Java compilation successful **********"
exit 0
else
echo "\n** Java compilation error in file ** File not checked in to CVS **"
exit 1
fi
我正在运行这段代码,但无论我返回的是什么退出状态,我都将得到结果var为0(我认为它将返回shell脚本是否成功运行)。
如何获取在Python脚本的shell脚本中设置的退出状态?
3条答案
按热度按时间3ks5zfa01#
从此处获取:How to get exit code when using Python subprocess communicate method?
gg0vcinb2#
要使用推荐的**Python v3.5+**方法使用
subprocess.run()
来补充cptPH's helpful answer:ndh0cuux3#
在子进程中.Popen -〉创建标志用于在分离模式下创建进程,如果你不想在分离模式下创建进程,只需删除该部分即可。
subprocess.DETACHED_PROCESS -〉在python进程之外运行进程
使用proc.communicate()-〉你可以得到输出和来自该进程的错误proc.wait()将等待进程完成并给出程序的退出代码。
注意:subprocess.popen()和proc.wait()之间的任何命令都将在等待调用时照常执行,在子进程完成之前不会进一步执行。