Как у вас есть функция или что-то, что будет выполнено до выхода вашей программы? У меня есть script, который будет постоянно работать в фоновом режиме, и мне нужно его сохранить некоторые данные в файл до его выхода. Есть ли стандартный способ сделать это?
Выполнение чего-либо перед выходом программы
Ответ 1
Проверьте модуль atexit
:
http://docs.python.org/library/atexit.html
Например, если я хотел распечатать сообщение, когда мое приложение завершалось:
import atexit
def exit_handler():
print 'My application is ending!'
atexit.register(exit_handler)
Просто имейте в виду, что это отлично работает для нормального завершения script, но он не будет вызван во всех случаях (например, фатальные внутренние ошибки).
Ответ 2
Если вы хотите, чтобы что-то всегда запускалось, даже при ошибках, используйте try: finally: вроде этого -
def main():
try:
execute_app()
finally:
handle_cleanup()
if __name__=='__main__':
main()
Если вы хотите также обрабатывать исключения, вы можете вставить за исключением: до окончательного:
Ответ 3
Если вы остановите script, подняв KeyboardInterrupt
(например, нажав Ctrl-C), вы можете поймать это как стандартное исключение. Вы также можете поймать SystemExit
таким же образом.
try:
...
except KeyboardInterrupt:
# clean up
raise
Я упоминаю об этом просто так, чтобы вы знали об этом; "правильным" способом является упомянутый выше модуль atexit
.