Python调用pyautogui截图保存时报错FileNotFoundError问题求助
报错原因
- 潜在问题:代码中调用了
os.getcwd()但未导入os模块,会触发名称未定义错误 - 核心原因:
/home/user/IXL-Bot/Data/Screenshots/目录不存在,PIL的save方法不会自动创建不存在的父级目录,因此打开文件时触发路径不存在报错 - 隐藏隐患:手动用
+拼接带斜杠的路径写法不兼容不同操作系统的路径规则,容易出现适配问题
解决方法
修正后的完整代码
import pyautogui as pygui import os def take_screenshot(): ss = pygui.screenshot() # 获取当前工作目录 work_dir = os.getcwd() # 系统自适应拼接目标保存目录 save_dir = os.path.join(work_dir, "Data", "Screenshots") # 递归创建目录,已存在时不报错 os.makedirs(save_dir, exist_ok=True) # 拼接完整保存路径 save_path = os.path.join(save_dir, "Screenshot.png") ss.save(save_path)
修改说明
- 补充了
os模块导入,解决名称未定义问题 - 用
os.path.join拼接路径,自动适配不同操作系统的路径格式 - 新增
os.makedirs自动创建目标目录,exist_ok=True参数避免目录已存在时触发重复创建错误
Python 3.4+ 可选简化写法(用pathlib处理路径更简洁)
import pyautogui as pygui from pathlib import Path def take_screenshot(): ss = pygui.screenshot() save_path = Path.cwd() / "Data" / "Screenshots" / "Screenshot.png" # 自动创建父目录 save_path.parent.mkdir(parents=True, exist_ok=True) ss.save(save_path)
内容的提问来源于stack exchange,提问作者Random Person
相关产品推荐
相关产品推荐

