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
相关产品推荐
相关产品推荐

