我正在使用exec執行不同的Python腳本。我想確定執行的腳本是否成功完成。反正在使用exec時得到退出代碼?除了獲得退出代碼之外,還有其他選擇嗎?是否可以通過調用exec來獲取退出代碼?
file_to_execute = sys.argv[1]
# Want to find out if file_to_execute completed successfully
exec(open(file_to_execute).read())
我正在使用exec執行不同的Python腳本。我想確定執行的腳本是否成功完成。反正在使用exec時得到退出代碼?除了獲得退出代碼之外,還有其他選擇嗎?是否可以通過調用exec來獲取退出代碼?
file_to_execute = sys.argv[1]
# Want to find out if file_to_execute completed successfully
exec(open(file_to_execute).read())
一種選擇是運行它作爲一個子進程:
import subprocess
returncode = 0
try:
subprocess.check_output(['python', file_to_execute])
except subprocess.CalledProcessError as e:
returncode = e.returncode
您執行目前的方法不運行它作爲一個過程,所以沒有退出代碼。相反,exec
直接執行Python代碼,就好像它存在於當前文件中一樣。
Gotcha。我不能使用子進程,我需要使用exec來解決我真正的問題。無論如何找出執行的代碼是否拋出異常? – user3715648
如果執行的代碼拋出異常,它會在當前進程中拋出異常。 –
*沒有*退出代碼。 – user2357112
它不執行腳本,它在當前腳本中執行一些Python代碼。你期望什麼*「退出代碼」?如果該代碼沒有成功執行,您只會得到一個錯誤。 – jonrsharpe
這不是你如何執行腳本。看看['subprocess.run()'](https://docs.python.org/3.5/library/subprocess.html#subprocess.run)。 –