pyzipper 打包 dist 目录

利用 python 打包 zip

使用 pyzipper 打包 dist 目录

要使用 pyzipper 打包 dist 目录,你可以按照以下步骤操作:

安装 pyzipper

首先确保你已经安装了 pyzipper,如果没有安装,可以使用 pip 安装:

pip install pyzipper

打包脚本示例

以下是一个使用 pyzipper 打包 dist 目录的完整示例脚本:

import os
import pyzipper

def zip_dist_directory(output_zip_path, password=None):
    """
    打包 dist 目录为加密的 ZIP 文件

    :param output_zip_path: 输出的 ZIP 文件路径
    :param password: 可选密码,如果不提供则不加密
    """
    dist_dir = 'dist'  # 要打包的目录

    # 确保 dist 目录存在
    if not os.path.exists(dist_dir):
        raise FileNotFoundError(f"目录 '{dist_dir}' 不存在")

    # 创建 ZIP 文件
    with pyzipper.AESZipFile(
        output_zip_path,
        'w',
        compression=pyzipper.ZIP_DEFLATED,
        encryption=pyzipper.WZ_AES if password else None
    ) as zipf:
        if password:
            # 设置密码
            zipf.setpassword(password.encode('utf-8'))

        # 遍历 dist 目录
        for root, dirs, files in os.walk(dist_dir):
            for file in files:
                file_path = os.path.join(root, file)
                # 计算在 ZIP 中的相对路径
                arcname = os.path.relpath(file_path, os.path.dirname(dist_dir))
                zipf.write(file_path, arcname)

    print(f"成功打包 '{dist_dir}' 目录到 '{output_zip_path}'")

# 使用示例
if __name__ == '__main__':
    output_zip = 'dist_archive.zip'
    # 如果需要密码,取消下面一行的注释
    # zip_password = 'your_password_here'
    zip_password = None  # 不使用密码

    zip_dist_directory(output_zip, zip_password)

脚本说明

  1. 该脚本会递归地将 dist 目录下的所有文件和子目录打包到一个 ZIP 文件中
  2. 你可以选择是否设置密码(AES 加密)
  3. 使用了 DEFLATE 压缩算法以获得更好的压缩率
  4. 打包后的 ZIP 文件会保留原始目录结构

注意事项

  • 如果 dist 目录不存在,脚本会抛出异常
  • 使用密码时,确保密码足够复杂以保证安全性
  • 生成的 ZIP 文件与原始 dist 目录在同一层级

你可以根据需要修改脚本,例如更改输出文件名、压缩级别或加密方式。