2017-02-14 64 views
0

我正在使用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()) 
+1

*沒有*退出代碼。 – user2357112

+2

它不執行腳本,它在當前腳本中執行一些Python代碼。你期望什麼*「退出代碼」?如果該代碼沒有成功執行,您只會得到一個錯誤。 – jonrsharpe

+0

這不是你如何執行腳本。看看['subprocess.run()'](https://docs.python.org/3.5/library/subprocess.html#subprocess.run)。 –

回答

0

一種選擇是運行它作爲一個子進程:

import subprocess 
returncode = 0 
try: 
    subprocess.check_output(['python', file_to_execute]) 
except subprocess.CalledProcessError as e: 
    returncode = e.returncode 

您執行目前的方法不運行它作爲一個過程,所以沒有退出代碼。相反,exec直接執行Python代碼,就好像它存在於當前文件中一樣。

+0

Gotcha。我不能使用子進程,我需要使用exec來解決我真正的問題。無論如何找出執行的代碼是否拋出異常? – user3715648

+2

如果執行的代碼拋出異常,它會在當前進程中拋出異常。 –

相關問題