PyAutoGUI的locateCenterOnScreen函数无法识别PNG图片报错如何解决?
错误根因及修复方案
1. 路径不匹配问题
你将ADF4350.png存放在系统图片文件夹,但代码中仅传入文件名,locateCenterOnScreen接口默认会从当前Python脚本的执行工作目录查找文件,无法直接读取系统图片目录的资源。
2. 代码变量名错误
你定义的位置变量名为ADF4350_location,后续点击调用时写的是ADF_location,变量名不匹配就算找到图片也会抛出NameError。
3. Windows路径转义问题
你调用os.startfile传入的路径里用了单反斜杠\,Python中单反斜杠是转义符,部分特殊字符组合会被识别为转义序列导致路径解析失败。
具体修复步骤
- 方法一:直接传入图片完整绝对路径
先找到你系统图片文件夹的完整路径,比如Windows默认图片文件夹路径为C:\Users\你的用户名\Pictures\ADF4350.png,把完整路径传入接口即可。 - 方法二:将
ADF4350.png移动到和你当前运行的Python脚本同一个文件夹下,不用改路径参数即可正常读取。 - 所有Windows路径统一用双反斜杠
\\或者前缀r标记为原始字符串,避免转义问题。
修正后可运行代码
import time import pyautogui as auto import os # 启动ADF软件,路径加r标记为原始字符串避免转义 os.startfile(r"C:\Program Files (x86)\Analog Devices\ADF435x\ADF435x.exe") time.sleep(2) # 这里替换为你自己的ADF4350.png实际完整路径,或者把图片放脚本同目录直接写文件名 ADF4350_location = auto.locateCenterOnScreen(r"C:\Users\你的用户名\Pictures\ADF4350.png") # 变量名统一 auto.click(ADF4350_location)
额外排查项
如果按上述修改后仍报错,按顺序排查:
- 确认图片文件后缀确实是
.png,不是被隐藏了后缀名的其他格式(比如jpg改名成png) - 确认Python进程对图片文件有读取权限,可以右键图片-属性-安全里检查权限配置
- 截图的时候要确保截图内容和实际屏幕显示的ADF4350选项完全一致,包括缩放比例、明暗、周边内容,否则pyautogui匹配不到,但这种情况不会报文件读取错误,只会返回
None。
内容的提问来源于stack exchange,提问作者Lennon Kirby
相关产品推荐
相关产品推荐

