Python网络爬虫往往需要连续运行很长时间。期间,运行过程中会随时输出一些状态信息,供分析查看。在此过程中,有时会选择所需信息,然后习惯性地点击Ctrl+C进行复制操作,啊哦~~~~ 不妙!对于运行中的Python来说,这也会导致发出退出运行的信号。于是我们就看到如下的画面:
KeyboardInterrupt异常!怎么办?如果不想因为一个粗心大意的按键而导致程序中途退出,势必需要对退出信号进行处理,设置退出信号SIGINT的处理函数。具体代码如下:
import timeimport signal def signal_handler(signal,frame): print('You pressed Ctrl+C!') signal.signal(signal.SIGINT,signal_handler)print('Press Ctrl+C')for x in range(1,100): time.sleep(2) print(x)
现在,即使我们随意反复点击Ctrl+C,也不会导致程序意外退出了。另外,点击Ctrl+\ 程序也不会再退出了。如图:
当然,在有些时候,当我们点击Ctrl+C时,还是希望程序能中断运行,但我们不想看到Traceback那种不友好的信息,而是希望程序能比较优雅地停下来。这时,不妨在退出信号SIGINT处理函数中,添加一句:sys.exit(0)就可以了。现在代码和运行情况如下:
import timeimport signalimport sys def signal_handler(signal,frame): print('You pressed Ctrl+C!') sys.exit(0) signal.signal(signal.SIGINT,signal_handler)print('Press Ctrl+C')for x in range(1,100): time.sleep(2) print(x)
运行上述程序以后,按Ctrl+C就容易成功停止程序了。
完毕!!!!!!!
点赞?????在看