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

pyautogui locateOnScreen如何正确设置查找图片的文件路径?

问题核心原因

三个高频触发点:

  • 相对路径基准错误:Python读取相对路径时,默认以程序启动时的工作目录为查找起点,和.py代码文件本身的存放位置没有直接关系。比如你在IDE里运行代码时如果工作目录没配置对,哪怕图片和代码放在同一个文件夹,直接传文件名也会找不到。你之前尝试传入pyautogui/x.png不生效也是同理——如果当前工作目录不在pyautogui文件夹的上一级,这个相对路径同样是无效的。
  • 系统隐藏扩展名导致文件名错误:Windows默认开启隐藏已知文件类型扩展名,你在资源管理器里看到的pythontest.png,真实文件名很可能是pythontest.png.png——保存图片时系统自动追加了.png后缀,因为扩展名被隐藏你看不到,传入代码的文件名和真实文件名不匹配,自然会报文件不存在。
  • 额外隐患:你把存放代码的文件夹命名为pyautogui,和第三方库同名,很容易引发导入冲突,建议先把文件夹改成非重名的名称,比如pyautogui_demo。
可直接落地的解决步骤
  1. 先修正文件名显示问题:打开存放代码和截图的文件夹,点击资源管理器顶部的「查看」选项卡,勾选「文件扩展名」选项,确认截图的真实后缀为.png,不存在双后缀的情况。
  2. 代码中放弃使用不可靠的相对路径,基于当前代码文件的位置拼接绝对路径,彻底绕开工作目录的影响,修改后的可运行代码如下:
import pyautogui
import time
import os

# 获取当前代码文件所在文件夹的绝对路径
current_file_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接出截图的完整绝对路径
screenshot_path = os.path.join(current_file_dir, "pythontest.png")

# 调试用:路径不对时会打印False,可对照输出的路径核对文件位置
print(f"当前查找的图片路径:{screenshot_path},文件是否存在:{os.path.exists(screenshot_path)}")

print("Starts in 2 seconds")
time.sleep(2)

first = pyautogui.locateCenterOnScreen(screenshot_path)
pyautogui.click(first)
补充排查点

如果路径确认存在还是调用失败,不属于路径问题:

  • 检查系统显示缩放:如果你的Windows开了125%、150%等非100%的显示缩放,pyautogui默认无法匹配屏幕内容,需要先安装opencv-python库,调用时传入置信度参数:pyautogui.locateCenterOnScreen(screenshot_path, confidence=0.9)
  • 确认截图内容和屏幕显示完全一致:截图不能有多余边框、匹配区域不能被其他窗口遮挡,否则函数会返回None引发后续报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:36:26