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

使用shutil模块压缩文件时遭遇AttributeError问题求助

解决shutil压缩文件错误并实现目录打包

错误原因分析

  • 脚本命名冲突:你的脚本文件名为shutil.py,执行import shutil时,Python会优先导入当前目录下的这个文件,而非标准库的shutil模块,导致循环导入,同时无法找到标准库中的正确方法。
  • 方法名错误:shutil模块不存在name_archive方法,正确的压缩方法是make_archive。

正确实现步骤

  1. 重命名脚本文件:把你的脚本文件名从shutil.py改为其他名称(比如zip_files.py),避免和标准库模块名冲突。
  2. 使用正确的压缩方法:通过shutil.make_archive完成目录打包,参数说明:
    • base_name:输出压缩包的文件名(无需带格式后缀,例如填output会生成output.zip)
    • format:压缩格式,此处填zip
    • root_dir:需要压缩的目标目录,即你的files目录

正确代码示例

import shutil

# 将files目录打包为output.zip
shutil.make_archive("output", "zip", "files")

如果需要更灵活的压缩控制(比如指定特定文件、排除部分文件),可以使用zipfile模块,示例如下:

import zipfile
import os

def zip_directory(directory_path, output_path):
    with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(directory_path):
            for file in files:
                file_path = os.path.join(root, file)
                # 计算相对路径,避免压缩包包含完整绝对路径
                arcname = os.path.relpath(file_path, directory_path)
                zipf.write(file_path, arcname)

# 调用函数打包files目录为output.zip
zip_directory("files", "output.zip")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:42:07