Как у вас может быть функция или что-то, что будет выполнено до выхода из вашей программы? У меня есть сценарий, который будет постоянно работать в фоновом режиме, и мне нужно, чтобы он сохранял некоторые данные в файл до его выхода. Есть стандартный способ сделать это?
101
Ответы:
Ознакомьтесь с
atexit
модулем:http://docs.python.org/library/atexit.html
Например, если я хочу напечатать сообщение, когда мое приложение завершает работу:
Просто имейте в виду, что это отлично подходит для нормального завершения скрипта, но не будет вызываться во всех случаях (например, при фатальных внутренних ошибках).
источник
Note The exit function is not called when the program is killed by a signal, when a Python fatal internal error is detected, or when os._exit() is called
.Если вы хотите, чтобы что-то всегда работало, даже при ошибках, используйте
try: finally:
вот так -Если вы хотите также обрабатывать исключения, вы можете вставить
except:
передfinally:
источник
Если вы остановите сценарий, подняв a
KeyboardInterrupt
(например, нажав Ctrl-C), вы можете поймать это как стандартное исключение. Вы также можете пойматьSystemExit
таким же образом.Я упоминаю об этом только для того, чтобы вы знали об этом; «Правильный» способ сделать это -
atexit
модуль, упомянутый выше.источник