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

Windows系统使用shutil.make_archive创建压缩包报OSError问题

问题根因

你遇到的报错是Windows系统文件名非法字符限制导致的,和shutil.make_archive本身的功能无关:

  • Windows操作系统的文件名/路径名中禁止使用:(冒号)、<、>、"、/、\、|、?、*这些字符,而你生成的压缩包文件名里包含了时间字符串中的:(2021-08-26 17:44:34.189488里的三个冒号)
  • Linux系统允许冒号出现在文件名中,所以你的代码在Linux环境可以正常运行
  • 你误以为路径合法是因为只校验了路径的层级结构,没注意到文件名片段包含Windows禁止的特殊字符
修复方案

只需要在生成文件名的时候把时间字符串里的冒号替换为Windows允许的字符即可,比如替换为横杠、下划线:

# 把execution_datetime中的冒号替换为下划线
safe_datetime_str = str(execution_datetime).replace(':', '_')
archived_output_path = os.path.join(archive_dir_path, f'outputs_{safe_datetime_str}')
shutil.make_archive(archived_output_path, 'zip', output_dir_path)

替换后生成的文件名为outputs_2021-08-26 17_44_34.189488.zip,符合Windows文件名规范,即可正常创建压缩包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:09:03