Python调用pyautogui读取指定目录图片触发读取错误怎么解决
问题根因
这不是权限问题,核心错误点是os.listdir()仅返回目标目录下的文件名,不会携带父目录路径。你将纯文件名传入pyautogui.locateCenterOnScreen()时,函数会默认从脚本的当前工作目录查找文件,自然无法定位到存放在C:\myFolder下的图片,因此抛出文件缺失报错。
修复方法
- 导入
os.path.join方法,遍历文件名时拼接目标目录路径,生成完整的文件绝对路径存入图片列表,修改后的代码参考:
import os import pyautogui as py image_list = [] # 定义图片存放的根目录 img_root = r"C:\myFolder" # 读取目录下的所有文件 directory = os.listdir(img_root) # 拼接完整路径后加入列表 for file in directory: if file.lower().endswith('.png'): # 拼接根目录和文件名,得到完整路径 full_path = os.path.join(img_root, file) image_list.append(full_path) print(directory) while True: # 注意:如果y.jpg也迁移到了myFolder,这里同样要补全完整路径 if py.locateOnScreen(os.path.join(img_root, 'y.jpg')) is not None: for image in image_list: Found = py.locateCenterOnScreen(image)
- 额外优化:可以用
file.lower().endswith('.png')同时匹配大小写的png后缀,不用分开写两种判断条件。
内容的提问来源于stack exchange,提问作者user9686961
相关产品推荐
相关产品推荐

