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

Python鼠标左键点击截图:文件路径参数无效问题求助

问题解决:Windows下截图保存报错OSError: Invalid argument

核心原因

你遇到的错误是Windows系统不允许文件名包含冒号(:),代码里用%H:%M:%S生成的时间字符串带有冒号,导致生成的文件名违反Windows命名规则,触发了OSError。

解决方案

  1. 修改时间格式:把时间字符串里的冒号替换成Windows允许的字符,比如横杠(-)或点(.)
  2. 补充缺失的导入:代码中使用了datetime.now()但未导入datetime模块,需要添加导入语句
  3. 优化路径写法:路径末尾的双斜杠可简化为单斜杠,用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:20:31