Python程序运行中防止意外Ctrl+C按键致程序终止

        Python网络爬虫往往需要连续运行很长时间。期间,运行过程中会随时输出一些状态信息,供分析查看。在此过程中,有时会选择所需信息,然后习惯性地点击Ctrl+C进行复制操作,啊哦~~~~ 不妙!对于运行中的Python来说,这也会导致发出退出运行的信号。于是我们就看到如下的画面:

Python程序运行中防止意外Ctrl+C按键致程序终止_第1张图片

KeyboardInterrupt异常!怎么办?如果不想因为一个粗心大意的按键而导致程序中途退出,势必需要对退出信号进行处理,设置退出信号SIGINT的处理函数。具体代码如下:

import time
import 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+\ 程序也不会再退出了。如图:

Python程序运行中防止意外Ctrl+C按键致程序终止_第2张图片

当然,在有些时候,当我们点击Ctrl+C时,还是希望程序能中断运行,但我们不想看到Traceback那种不友好的信息,而是希望程序能比较优雅地停下来。这时,不妨在退出信号SIGINT处理函数中,添加一句:sys.exit(0)就可以了。现在代码和运行情况如下:

import time
import signal
import 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) 
Python程序运行中防止意外Ctrl+C按键致程序终止_第3张图片

你可能感兴趣的:(Python)