Jak możesz mieć funkcję lub coś, co zostanie wykonane przed zamknięciem programu? Mam skrypt, który będzie stale działał w tle i potrzebuję go do zapisania niektórych danych w pliku przed jego zamknięciem. Czy jest na to standardowy sposób?
101
Odpowiedzi:
Sprawdź
atexit
moduł:http://docs.python.org/library/atexit.html
Na przykład, jeśli chciałbym wydrukować komunikat, gdy moja aplikacja kończy działanie:
Należy tylko pamiętać, że działa to świetnie w przypadku normalnego zakończenia skryptu, ale nie zostanie wywołane we wszystkich przypadkach (np. Krytyczne błędy wewnętrzne).
źródło
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
.Jeśli chcesz, aby coś działało zawsze, nawet w przypadku błędów, użyj
try: finally:
tego -Jeśli chcesz również obsługiwać wyjątki, możesz wstawić
except:
przedfinally:
źródło
Jeśli zatrzymasz skrypt, podnosząc znak
KeyboardInterrupt
(np. Naciskając Ctrl-C), możesz to złapać jako standardowy wyjątek. Możesz też złapaćSystemExit
w ten sam sposób.Wspominam o tym, żebyście o tym wiedzieli; „właściwym” sposobem jest
atexit
wspomniany powyżej moduł.źródło