3

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

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

我需要像在 Python 中捕获键盘中断的答案中那样使用信号模块而不使用 try-except吗?我可以使用信号处理程序将全局变量设置为 True 并在它为 True 时中断循环吗?

原来的循环是:

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

1 回答 1

5

像下面这样的东西可能会起作用:

# 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_)) 
于 2012-11-02T16:45:10.293 回答