2017-02-09 71 views
2

是否可以從通過runpy.run_module()調用的模塊獲取退出代碼?python runpy.run_module退出代碼

我想取代我 exit_code = subprocess.call('py -m mymodule') runpy.run_module('mymodule') 仍能獲得exit_code值。

哪裏mymodule是包含一個python腳本__main__.py這只是做sys.exit(1)

測試runpy.run_module('mymodule')在交互shell目錄關閉該殼。我找不到有關此行爲的任何文檔。對我來說,看起來使用subprocess.callrunpy.run_module之間的區別是將它作爲程序或函數運行。如果是這種情況,則解釋行爲,如果我需要退出代碼,則不太可能使用runpy.run_module。 任何人都可以證實這一點,可能與我可以找到它的一些文件的鏈接。

回答

2

今天早上打我,所以我測試的解決方案,它的工作:

import runpy 

try: 
    runpy.run_module('mymodule') 
except SystemExit as exeption: 
    exitcode = exeption.code 
else: 
    exitcode = 0 

美中不足的是,你必須處理模塊中的每一個拋出異常。我只處理SystemExit例外情況,因爲這是我唯一感興趣的例外。