使用 ctrl c 中断 python 程序时如何做到优雅的退出

学习笔记 马富天 2020-08-06 17:46:41 1851 0

【摘要】日常编写调试运行程序过程中,难免需要手动终止程序,或者出于不小心操作导致程序终止,往往会导致一些有关数据库操作的代码引起数据丢失等情况,所以本人就在网上四处搜索相关的方法,能够在脚本意外中断时触发执行相关代码,记录有关数据,以下是总结出来的两种方法。

二话不多说,直接上例子。

1、使用 python 的异常 KeyboardInterrupt

  1. # 本代码复制后可以直接执行
  2. n = 1
  3. try:
  4. 	while n:
  5. 		n += 1
  6. except KeyboardInterrupt:
  7. 	print('hello , ni 触发了 ctrl + c!n = ',n)

这种方法并不推荐,因为使用起来不方便,推荐使用第二种方法。

2、使用 signal 模块

1)使用 ctrl + c 不会中断程序

  1. # 以下代码复制后可以直接执行
  2. # 以下代码使用 ctrl + c 时不会中断程序
  3. import time
  4. import signal
  5.  
  6. def signal_handler(signal,frame):
  7.     print('You pressed Ctrl+C!')
  8.  
  9. signal.signal(signal.SIGINT,signal_handler)
  10. print('Press Ctrl+C')
  11. for x in range(1,30):
  12.     time.sleep(1)
  13.     print(x) 

2)使用 ctrl + c 优雅的中断程序

  1. import time
  2. import signal
  3. import sys
  4.  
  5. def signal_handler(signal,frame):
  6.     print('You pressed Ctrl + C!')
  7.     print(x)
  8.     sys.exit(0)
  9.  
  10. signal.signal(signal.SIGINT,signal_handler)
  11. print('Press Ctrl + C')
  12. for x in range(1,20):
  13.     time.sleep(1)
  14.     print(x)

以上 2)中方法就可以实现在退出程序时,获取当前脚本的变量,然后进行相关的处理。

请输入图片名称

版权归 马富天个人博客 所有

本文标题:《使用 ctrl c 中断 python 程序时如何做到优雅的退出》

本文链接地址:http://www.mafutian.com/453.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

2

2

上一篇《 数据库设计的三大范式介绍 》 下一篇《 python 3 之 Argparse 模块简介【实现解析命令行读取参数】 》

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多