python - 使用一次后禁用 KeyboardInterrupt

标签 python python-3.x keyboardinterrupt

Cont = 1
while Cont == 1:
    try:
        while Cont == 1:
            counter = counter + 0.1
            counter = round(counter, 1)
            print(counter)
            time.sleep(0.1)
            if counter == crashNumber:
                Cont = 0
    except KeyboardInterrupt:
        Multiplier = counter

这里计数器会继续计数直到达到crashNumber,当按下Ctrl + C时,它会取这个数counter 的值,并将其用于 Multiplier 以供稍后使用。

但是我只想让用户有机会按一次,然后它就被禁用了。有什么办法可以做到这一点?

最佳答案

无论您是否愿意,KeyboardInterrupt 异常都会被抛出:因此,解决方案是在您的except block 中以不同的方式处理异常。我选择的实现将使用一个简单的 bool 值,该值以 True 开头,并在第一次中断时设置为 False:

import time

allow_interrupt = True
while True:
    try:
        time.sleep(1)
        print ('...')
    except KeyboardInterrupt:
        if allow_interrupt:
            print ('interrupted!')
            allow_interrupt = False

如果这能解决您的用例,请告诉我。

关于python - 使用一次后禁用 KeyboardInterrupt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40152821/

相关文章:

python - 如何创建大小为 N KB、重复次数为 "Hello World"的文本文件

function - 如何编写将不同关键字参数传递给不同函数的函数

python - 面对错误: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

c - 如何在内联汇编中使用 C 中声明的变量

python - 在缓慢的系统调用中处理 SIGINT

python - 正则表达式、Python 和文档注释 <!-- 文本 -->

python - 在轴坐标上使用自定义刻度线

python - ntpath.py 上的特殊错误

Python - 转置各种长度列表的列表 - 3.3 最简单​​的方法

python - 如何从 socket.timeout 异常处理程序中捕获 KeyboardInterrupt?