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

如何使用pyautogui识别屏幕图片并点击,图片读取OSError报错如何解决

问题核心原因
  • 首要原因是Python运行时的工作目录和脚本存储目录不一致:你写的相对路径benz.png会让程序从运行命令时的工作目录读取文件,而非脚本所在文件夹,所以即便图片和脚本放在同一个文件夹,程序也找不到对应文件。
  • 次要问题是代码存在逻辑错误:找到图片后的break语句会直接跳出if分支和外层循环,后面缩进错误的if flag == 1: break永远不会被执行,属于无效代码。
修复步骤
  1. 先解决图片读取失败问题:
    你可以通过动态拼接脚本所在目录的方式获取图片的绝对路径,无需手动写死路径,修改代码如下,在原有导入模块的部分增加os模块导入:
from pyautogui import *
import pyautogui
import time
import keyboard
import random
import win32api, win32con
import os # 新增导入os模块

# 新增:获取脚本所在目录,拼接图片完整路径
script_folder = os.path.dirname(os.path.abspath(__file__))
benz_img_path = os.path.join(script_folder, 'benz.png')

time.sleep(5)

def click():
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)

while keyboard.is_pressed('q') == False:
    if pyautogui.locateOnScreen(benz_img_path, region=(0,0,1366,768), grayscale=True, confidence=0.5) != None:
        click()
        time.sleep(0.05)
        break
  1. 额外排查点:
    如果修改路径后还是报错,先检查Windows系统是否关闭了「隐藏已知文件类型的扩展名」设置,避免你实际的图片文件名是benz.png.png但系统只显示benz.png的情况;另外确认Python运行权限可以读取对应文件夹下的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:36:01