如何在Python中结合其他异常使用KeyboardInterrupt?
问题分析与修复
你的代码存在几个语法和逻辑问题,直接导致KeyboardInterrupt无法生效(甚至代码可能根本无法运行),下面逐一修正:
核心问题点
- Python的布尔常量是**
True**(首字母大写),不是true,且while语句末尾必须加冒号: ImageNotFoundException是pyautogui模块下的异常,必须写成pyautogui.ImageNotFoundException,否则会报未定义错误- 变量
tries未初始化就直接使用,会触发NameError - 代码缩进不规范,Python对缩进要求严格,必须保持统一层级(推荐用4个空格)
修正后的代码
import pyautogui import time tries = 0 # 初始化计数器 while True: # 修正布尔值与语句结尾冒号 tries += 1 # 每次循环递增计数器 try: x, y = pyautogui.locateCenterOnScreen('default.png') pyautogui.click(x, y) print(x, y) time.sleep(0.5) except pyautogui.ImageNotFoundException: print(f"Nope nothing there. Try number: {tries}") # 用f-string简化输出格式 time.sleep(1) except KeyboardInterrupt: print("Manual shutdown activated...") time.sleep(1) break
补充说明
- 现在按下
Ctrl+C可以正常触发KeyboardInterrupt,执行打印逻辑后退出循环 - 新增
tries变量的初始化与递增逻辑,解决了未定义变量的问题 - 统一缩进层级,符合Python编码规范
- 用f-string替代旧的字符串拼接方式,代码更简洁易读
内容的提问来源于stack exchange,提问作者mmewtwosaysbye
相关产品推荐
相关产品推荐

