2017-02-09 15 views
2

runpy.run_module()によって呼び出されたモジュールから終了コードを取得することはできますか?python runpy.run_module終了コード

私は runpy.run_module('mymodule') と私の exit_code = subprocess.call('py -m mymodule') を交換し、まだexit_code値を取得したいです。 mymoduleだけではシェルを閉じて、インタラクティブシェルでテストrunpy.run_module('mymodule')sys.exit(1)

を行うPythonスクリプト__main__.pyを含むディレクトリである

。私はその動作に関する文書を見つけることができませんでした。私にとっては、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例外を処理しています。