我使用Python的默认cmd module来创建基于命令行的应用程序。
根据docs CTRL + D (它向命令行发出EOF信号)可以通过实现一个名为do_EOF
的函数来捕获,效果很好。
但是,有没有办法捕获 CTRL + C ?我希望在终止Python脚本之前执行特定的功能(保存所有未保存的更改),这是执行此操作的主要动机。
目前,我使用KeyboardInterrupts
抓取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')
这会导致以下NameError
:
name 'app' is not defined
如何捕获 CTRL + C ?
我认为signal
可能会以某种方式解决问题,但我不确定......
备注:该脚本需要在基于Unix和Windows的系统上运行。
答案 0 :(得分:0)
Ctrl C激活系统退出,这是一个例外,我很确定你可以通过try和except来捕获它。注意:要捕获SystemExit,必须在except中明确指定它。