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

有没有可以将目录添加到现有zip压缩包的函数或相关库?

不同编程语言下支持向已有zip包追加目录的第三方库推荐

Python

  • 标准库zipfile原生支持该功能,无需额外安装第三方依赖。以mode='a'追加模式打开zip包后,递归遍历目标目录并写入文件即可,可自定义保留目录的相对路径结构。
    参考代码示例:
import zipfile
import os

def add_dir_to_existing_zip(zip_path, target_dir_path):
    with zipfile.ZipFile(zip_path, 'a', zipfile.ZIP_DEFLATED) as zipf:
        for root, _, files in os.walk(target_dir_path):
            for file in files:
                file_abs_path = os.path.join(root, file)
                # 自定义文件在zip包内的存储路径
                arc_path = os.path.relpath(file_abs_path, os.path.dirname(target_dir_path))
                zipf.write(file_abs_path, arcname=arc_path)
  • 有高性能需求可选择第三方库pylibzip,是libzip的Python绑定,支持增量更新、大文件优化等扩展特性。

Java

  • 推荐Apache Commons Compress库,功能完善,无需解压原有zip内容即可完成目录追加,完整保留目录层级结构。
  • JDK 7+ 内置的FileSystemAPI也支持zip操作,将zip包作为虚拟文件系统挂载后,直接复制目录到虚拟路径即可完成追加,无需引入第三方依赖。

Node.js

  • 轻量场景优先选adm-zip,无原生依赖,加载已有zip包后调用addLocalFolder方法即可一键添加本地目录,最后写入保存即可。
    参考代码示例:
const AdmZip = require('adm-zip');
const zip = new AdmZip('./existing.zip');
// 第二个参数为目录在zip包内的存储路径
zip.addLocalFolder('./local_target_dir', 'inner_dir_path');
zip.writeZip('./existing.zip');
  • 大文件处理场景可使用yauzl+yazl的流式处理组合,内存占用更低,性能更好。

Go

  • 标准库archive/zip原生支持追加操作,读取原有zip条目后追加新目录对应的文件条目,回写文件即可,无需第三方依赖。
  • 性能优化可选第三方库klauspost/compress/zip,是标准库的优化分支,压缩速度提升明显,支持更多扩展特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:45:09