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

shutil.make_archive报错[Errno 2]:文件或目录不存在求助

解决shutil.make_archive报FileNotFoundError找不到'IMAGES'的问题

问题分析

你遇到的FileNotFoundError提示找不到'IMAGES'目录,虽然更新的是无关脚本,但大概率是工作目录变化或者归档路径的相对引用失效导致的——shutil.make_archive的第三个参数是归档的根目录(base_dir),你传了.(当前工作目录),如果脚本运行时的工作目录和之前不一样,就会导致它找不到预期的'IMAGES'路径。

另外,也可能是output_folder指向的路径里包含'IMAGES',但这个目录被误删、移动,或者权限问题导致无法访问。

排查与解决步骤

  • 确认当前工作目录:在调用shutil.make_archive前加代码打印当前路径,对比之前正常运行时的目录:

    import os
    print(os.getcwd())
    

    如果目录不一致,说明无关脚本间接改变了脚本启动路径,要么调整回原工作目录,要么改用绝对路径操作。

  • 检查路径有效性:打印output_folder的值,同时验证相关目录是否存在:

    print(output_folder)
    print(os.path.exists(output_folder))
    print(os.path.exists('IMAGES'))  # 若IMAGES是子目录,换成对应绝对路径检查
    

    如果'IMAGES'不存在,要么创建必要的目录,要么调整归档目标路径,排除对该目录的依赖。

  • 修正归档参数:避免用相对路径.作为base_dir,改用绝对路径更稳妥:

    import os
    # 把output_folder的绝对路径拆解为父目录和自身名称
    abs_output = os.path.abspath(output_folder)
    parent_dir = os.path.dirname(abs_output)
    archive_target = os.path.basename(abs_output)
    shutil.make_archive(output_folder, 'zip', parent_dir, archive_target)
    

    这样不管工作目录如何变化,都能基于绝对路径定位到要归档的内容,不会出现路径引用错误。

  • 排查无关脚本影响:如果上述步骤都没问题,去检查更新的无关脚本是否有修改工作目录(比如os.chdir())、删除/移动文件的代码,这些操作可能间接影响当前脚本的文件访问路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:37:40