Python鼠标左键点击截图:文件路径参数无效问题求助
问题解决:Windows下截图保存报错OSError: Invalid argument
核心原因
你遇到的错误是Windows系统不允许文件名包含冒号(:),代码里用%H:%M:%S生成的时间字符串带有冒号,导致生成的文件名违反Windows命名规则,触发了OSError。
解决方案
- 修改时间格式:把时间字符串里的冒号替换成Windows允许的字符,比如横杠(-)或点(.)
- 补充缺失的导入:代码中使用了
datetime.now()但未导入datetime模块,需要添加导入语句 - 优化路径写法:路径末尾的双斜杠可简化为单斜杠,用
os.path模块处理路径更稳妥
修改后的完整代码
from pymouse import PyMouseEvent import pyautogui import os import datetime # 补充缺失的导入 class ScreenshotsTaker(PyMouseEvent): def __init__(self, path): self.path = path # 截图保存路径 PyMouseEvent.__init__(self) def click(self, x, y, button, press): # 检测鼠标左键按下动作 if button == 1 and press: # 捕获截图 myScreenshot = pyautogui.screenshot() # 生成合法的时间文件名(用横杠替换冒号) now = datetime.now() dt_string = now.strftime("%d-%m-%Y_%H-%M-%S") # 拼接完整保存路径 save_path = os.path.join(self.path, f"{dt_string}.jpg") myScreenshot.save(save_path) print("ScreenShot is taken") # 初始化时路径使用单斜杠即可 C = ScreenshotsTaker(path="C:/Users/tjdob/codebase/Screenshoots/") C.run()
额外提示
- Windows文件名禁止的字符包括:
< > : " / \ | ? *,生成文件名时需避开这些字符 - 可提前检查保存目录是否存在,若不存在用
os.makedirs(self.path, exist_ok=True)自动创建,避免目录不存在的报错
内容的提问来源于stack exchange,提问作者Tyson Doberneck
相关产品推荐
相关产品推荐

