Python cmd模块:捕获Ctrl+;C
我正在使用Python的默认设置创建一个基于命令行的应用程序 根据CTRL+D(向命令行发送EOF信号)可以通过实现一个名为Python cmd模块:捕获Ctrl+;C,python,cmd,terminal,signals,Python,Cmd,Terminal,Signals,我正在使用Python的默认设置创建一个基于命令行的应用程序 根据CTRL+D(向命令行发送EOF信号)可以通过实现一个名为do_EOF的函数来捕获,该函数工作得很好 但是,有没有一种方法也可以捕获CTRL+C?我想在终止Python脚本之前执行一个特定的函数(保存所有未保存的更改),这是执行此操作的主要动机 目前,我使用try except block捕捉键盘中断,如下所示: if __name__ == '__main__': try: MyCmd().cmdloop
do_EOF
的函数来捕获,该函数工作得很好
但是,有没有一种方法也可以捕获CTRL+C?我想在终止Python脚本之前执行一个特定的函数(保存所有未保存的更改),这是执行此操作的主要动机
目前,我使用try except block
捕捉键盘中断,如下所示:
if __name__ == '__main__':
try:
MyCmd().cmdloop()
except KeyboardInterrupt:
print('\n')
我试图将其扩展到:
if __name__ == '__main__':
try:
app = MyCmd().cmdloop()
except KeyboardInterrupt:
app.execute_before_quit()
print('\n')
这会导致以下名称错误
:
name 'app' is not defined
如何捕获CTRL+C
我想我能做到这一点,但我不确定
备注:该脚本需要同时在基于Unix和Windows的系统上运行。Ctrl C会激活系统退出,这就像是一个异常,我很确定您可以使用try和except捕获它。注意:要捕获SystemExit,您必须在except中显式指定它。Ctrl C激活系统退出,这就像一个异常,我很确定您可以使用try和except捕获它。注意:要捕获SystemExit,您必须在except中明确指定它。您是否考虑过改用
atexit
?您是否考虑过改用atexit
?