延迟Python中的键盘中断是程序的重要部分

时间:2012-11-02 16:34:14

标签: python keyboardinterrupt

对于程序的一个重要部分(在我的循环示例中)延迟键盘中断的方法是什么。

我想下载(或保存)许多文件,如果花费的时间太长,我想在最近的文件下载后完成程序。

我需要将信号模块用作in the answer for Capture keyboardinterrupt in Python without try-except吗?我可以使用信号处理程序将全局变量设置为True,如果它是True,则打破周期吗?

原始周期是:

for file_ in files_to_download:
    urllib.urlretrieve("".join(baseurl, file_), os.path.join(".", file_)) 

1 个答案:

答案 0 :(得分:4)

以下内容可能有效:

# at module level (not inside class or function)
finish = False
def signal_handler(signal, frame):
    global finish
    finish = True

signal.signal(signal.SIGINT, signal_handler)

# wherever you have your file downloading code (same module)
for file_ in files_to_download:
    if finish:
        break
    urllib.urlretrieve("".join(baseurl, file_), os.path.join(".", file_))