当前位置: 代码迷 >> python >> Python-如何在Ctrl + C上插入主脚本
  详细解决方案

Python-如何在Ctrl + C上插入主脚本

热度:59   发布时间:2023-07-14 08:59:28.0

我正在分析文件,这可能需要很多时间。 但是,当我按Ctrl + C中止脚本时,Python只会停止读取一个文件,而转到下一个文件。 它不会杀死整个脚本。 我怎样才能做到这一点?

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,并丢失到目前为止完成的所有工作...

将尝试移出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()如果你有一个文件打开,等等。