web-dev-qa-db-ja.com

例外が発生したときにPythonで終了コードを設定する

$ cat e.py
raise Exception
$ python e.py
Traceback (most recent call last):
  File "e.py", line 1, in <module>
    raise Exception
Exception
$ echo $?
1

完全なスタックトレースをダンプしたまま、この終了コードを1から3に変更したいと思います。これを行う最良の方法は何ですか?

32
sh-beta

traceback モジュールを見てください。次のことができます。

import sys, traceback

try:
  raise Exception()
except:
  traceback.print_exc()
  sys.exit(3)

これは、標準エラーにトレースバックを書き込み、コード3で終了します。

43
tomasz