You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多图locateOnScreen嵌套try-except遇制表符错误及优化咨询

问题解决与优化方案

一、修复“inconsistent use of tabs”错误

这个错误是Python代码中同时混用了制表符(Tab)和空格缩进导致的,属于语法级错误,和多图定位逻辑无关。

修复步骤:

  • 检查locateAndClickSymbolNeonVar函数的所有缩进,确保全程只用一种缩进方式(推荐4个空格,Python社区通用规范)
  • 利用IDE工具统一缩进:比如VSCode按Ctrl+Shift+P选择"Convert Indentation to Spaces";PyCharm通过Code → Reformat Code自动修正
  • 手动核对嵌套try-except块的缩进层级,保证try、except、return等语句的缩进对齐

修正后的基础代码示例:

def locateAndClickSymbolNeonVar():
    # 统一使用4个空格缩进
    try:
        center = locateCenterOnScreen("google_sea_serp_type1.png")
        click(center)
        print("成功定位并点击Google SEA Serp type1")
        return
    except:
        pass

    try:
        center = locateCenterOnScreen("google_sea_serp_type2.png")
        click(center)
        print("成功定位并点击Google SEA Serp type2")
        return
    except:
        pass

    # 后续更多图片尝试逻辑...
    print("所有目标图片均未找到")

二、多图搜索的更优实现方式

嵌套try-except会导致代码冗余、可读性差,推荐用列表遍历+提前返回的方式重构:

优化后代码示例:

def locateAndClickSymbolNeonVar():
    # 按优先级将目标图片路径存入列表(越靠前优先级越高)
    target_images = [
        "google_sea_serp_type1.png",
        "google_sea_serp_type2.png",
        "google_sea_serp_type3.png",
        # 可继续追加更多图片路径
    ]

    for img_path in target_images:
        try:
            center = locateCenterOnScreen(img_path)
            click(center)
            print(f"成功定位并点击:{img_path}")
            return  # 找到匹配项后直接终止函数
        except Exception as e:
            # 可选:打印失败日志用于调试
            print(f"定位{img_path}失败:{str(e)}")
            continue

    # 所有图片匹配失败的兜底逻辑
    print("未找到任何目标图片")

优化点说明:

  • 代码结构简洁,新增/删除目标图片只需修改列表,无需重复编写try-except块
  • 逻辑清晰,按优先级依次尝试,找到匹配项即停止,避免无效遍历
  • 扩展性强,后续新增图片直接追加到列表即可
  • 建议捕获具体异常(比如ImageNotFoundException),而非全局Exception,减少误吞其他类型错误

内容的提问来源于stack exchange,提问作者Bill Sian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:25:33