import sys
try:
# сюда программу
except KeyboardInterrupt:
# если закрывается консоль то выполнять этот код
sys.exit(0)
使用第三方模块atexit:
import atexit
def cleanup():
# если программа завершается то выполнять этот код
atexit.register(cleanup)
该功能cleanup()监视程序的退出,包括Ctrl-C
使用信号模块 sys:
import signal
import sys
def signal_handler(signal, frame):
#исполняемый код перед закрытием сюда
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
从屏幕截图来看,你有 Windows。
您需要通过Win32 API 中的SetConsoleCtrlHandler函数设置控制台关闭处理程序。
这是一个例子:
当控制台
on_exit窗口关闭并运行一个pause询问Press any key to continue...它实际上
on_exit接收了几个不同的信号,但在这个例子中,我没有为关闭控制台的不同原因而进行特殊处理。当脚本从 运行时
cmd.exe,它实际上要求按下任何按钮。如果脚本是从 Windows 终端运行的,那么终端会立即关闭,但仍然
some.txt会记录关闭窗口的确切时刻,也就是说,它on_exit可以正常工作。您的问题有几种解决方案:
atexit:该功能
cleanup()监视程序的退出,包括Ctrl-C我认为这里很清楚。