使用pyautogui定位点击屏幕图片时报FileNotFoundError该如何解决?
pyautogui 报FileNotFoundError找不到图片问题解决方案
你遇到的报错核心原因是Python读取相对路径文件时,参考的是终端的当前工作目录,而非脚本文件所在的目录。从你的报错日志可以看到:
- 终端当前工作目录是
C:\Users\rkwad - 你的脚本存放在
c:/Users/rkwad/OneDrive/Desktop/python/moretest.py
你直接写相对路径'7boi.png'时,Python会去C:\Users\rkwad目录下查找文件,而非脚本所在的python文件夹,所以即便你把图片和脚本放在同一个目录,也会触发找不到文件的报错。
解决方案
- 方案1:直接使用绝对路径指定图片位置
把文件路径替换为完整的绝对路径,注意路径前加r避免Windows路径的转义字符问题:button7location = pyautogui.locateOnScreen(r'C:\Users\rkwad\OneDrive\Desktop\python\7boi.png') - 方案2:动态拼接脚本目录与图片路径(推荐,不受运行目录影响)
引入os模块自动获取脚本所在目录,拼接得到图片的绝对路径,不管你在哪个目录下运行脚本都能正常找到文件:import pyautogui import os import time # 获取当前脚本所在的目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接得到图片的完整路径 img_path = os.path.join(script_dir, '7boi.png') button7location = pyautogui.locateOnScreen(img_path) # 补充:locateOnScreen返回的是区域对象,建议取中心点点击避免定位偏移 if button7location: center = pyautogui.center(button7location) pyautogui.moveTo(center) pyautogui.click(center) else: print("未在屏幕上找到目标图片") - 其他检查项
- 确认Windows系统没有隐藏文件扩展名:打开文件资源管理器顶部「查看」选项卡,勾选「文件扩展名」,避免你实际保存的文件名是
7boi.png.png(系统隐藏了后一个.png后缀导致看起来文件名正确) - 可以在代码中加入
print(os.getcwd())打印Python当前的工作目录,确认你是否把图片放在了对应的路径下
- 确认Windows系统没有隐藏文件扩展名:打开文件资源管理器顶部「查看」选项卡,勾选「文件扩展名」,避免你实际保存的文件名是
内容的提问来源于stack exchange,提问作者Seth Israel
相关产品推荐
相关产品推荐

