[英]How to get the exit status set in a shell script in Python
我想在從 Python 調用的 shell 腳本中設置退出狀態。
代碼如下
result = os.system("./compile_cmd.sh")
print result
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 腳本中設置的退出狀態?
import subprocess
result = subprocess.Popen("./compile_cmd.sh")
text = result.communicate()[0]
return_code = result.returncode
要使用subprocess.run subprocess.run()
推薦的Python v3.5+方法補充cptPH 的有用答案:
import subprocess
# Invoke the shell script (without up-front shell involvement)
# and pass its output streams through.
# run()'s return value is an object with information about the completed process.
completedProc = subprocess.run('./compile_cmd.sh')
# Print the exit code.
print(completedProc.returncode)
import subprocess
proc = subprocess.Popen("Main.exe",stdout=subprocess.PIPE,creationflags=subprocess.DETACHED_PROCESS)
result,err = proc.communicate()
exit_code = proc.wait()
print(exit_code)
print(result,err)
在 subprocess.Popen -> 創建標志用於在分離模式下創建進程,如果您不希望分離更多,只需刪除該部分。
subprocess.DETACHED_PROCESS -> 在 python 進程之外運行進程
使用 proc.communicate() -> 你可以得到他的輸出和來自該進程的錯誤 proc.wait() 將等待進程完成並給出程序的退出代碼。
注意: subprocess.popen() 和 proc.wait() 之間的任何命令將在等待調用時照常執行,在子進程完成之前不會進一步執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.