Как найти код или причину выхода при вызове обратного вызова atexit в Python?

Я хочу знать, правильно ли завершается скрипт Python или нет . Для этого я используюatexit , но проблема в том, что я не знаю, как отличить, был ли atexit вызван с sys.exit(0), ненулевым или исключением.

Обоснование: если программа завершается правильно, она ничего не делает, но если программа завершается исключением или возвращает код ошибки (статус выхода), отличный от нуля, я хочу вызвать какое-то действие.

Если вы удивитесь, почему я не использую try/finally, так это потому, что я хочу добавить такое же поведение для дюжины скриптов, импортирующих общий модуль. Вместо того, чтобы изменять их все, я хочу добавить хак atexit() в импортируемый модуль и получить это поведение бесплатно во всех них.

18
задан sorin 16 March 2012 в 16:58
поделиться