Python如何在Ctrl+C上中断主脚本

2024-04-25 21:53:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在分析文件,可能要花很多时间。 但是当我按Ctrl+C终止脚本时,Python只会停止读取一个文件并转到下一个文件。它不会杀死整个scirpt。 我该怎么做?你知道吗

from os import listdir
from os.path import isfile, join

folder = '...'
for folder in folders:

    filesInFolder = [f for f in listdir(folder) if isfile(join(folder, f))]

    for file in filesInFolder:

        try:
            with open(folder+'\\'+file, "r") as file:
                # Analyzing

        except KeyboardInterrupt:
            # Kill the whole script!

目前,我唯一的解决办法是杀死Python并失去目前为止所做的所有工作。。。你知道吗


Tags: 文件infromimport脚本foros时间
2条回答

将try移出for循环:

try:
    for ....
except KeyboardInterrupt:
    pass
from os import listdir
from os.path import isfile, join
import signal

def signal_handler(sig, frame):
    print("Program exited with CTRL+C.")
    #Add whatever you want the program to do on ctrl+c here
    sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)

folder = '...'
for folder in folders:
    filesInFolder = [f for f in listdir(folder) if isfile(join(folder, f))]
    for file in filesInFolder:
        with open(folder+'\\'+file, "r") as file:
            # Analyzing

您需要的是一个信号处理程序,它在按下ctrl+c时被调用并终止整个脚本。试着把这段代码放在当前代码的上面(在有其他导入的地方使用import语句),然后试一试。如果希望ctrl+c执行其他操作,例如关闭文件,请将其放入signal_handler函数中。所以在print上面,如果你打开了一个文件,你可以添加File.close(),等等

相关问题 更多 >