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

使用ZipFile解压时生成额外子文件夹的问题求助

解决Zip文件解压后生成额外子文件夹的问题

这是因为你压缩Zip文件时,是把带层级结构的文件或整个文件夹打包进去的,extractall()方法会完全还原原有的目录结构,所以才会生成额外的子文件夹。

以下是两种解决方法:

  • 方案一:修改代码,直接将文件提取到Zip所在文件夹
    遍历Zip包内的所有文件,跳过目录,只提取文件本体到目标路径,忽略原有的层级结构:

    import zipfile
    import os
    
    path_to_zip_file = "file.zip"
    # 获取Zip文件所在的文件夹路径
    target_dir = os.path.dirname(path_to_zip_file) or os.getcwd()
    
    with zipfile.ZipFile(path_to_zip_file, 'r') as zip_ref:
        for file_entry in zip_ref.namelist():
            # 跳过Zip内的文件夹条目
            if file_entry.endswith('/'):
                continue
            # 提取文件名,去掉前面的目录层级
            pure_filename = os.path.basename(file_entry)
            # 构建最终的文件保存路径
            save_path = os.path.join(target_dir, pure_filename)
            # 读取并写入文件
            with open(save_path, 'wb') as output_file:
                output_file.write(zip_ref.read(file_entry))
    
  • 方案二:调整Zip文件的打包方式
    如果是你自己打包的Zip文件,确保打包时选择的是文件夹内的文件而非整个文件夹。比如在VS Code终端中使用zip命令时:

    # 正确:打包当前目录下的所有文件,解压后不会生成额外子文件夹
    zip file.zip *
    # 错误:打包整个文件夹,解压后会还原该文件夹结构
    zip file.zip ./your_folder/
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:03:50