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)
脚本说明
- 该脚本会递归地将
dist
目录下的所有文件和子目录打包到一个 ZIP 文件中 - 你可以选择是否设置密码(AES 加密)
- 使用了 DEFLATE 压缩算法以获得更好的压缩率
- 打包后的 ZIP 文件会保留原始目录结构
注意事项
- 如果
dist
目录不存在,脚本会抛出异常 - 使用密码时,确保密码足够复杂以保证安全性
- 生成的 ZIP 文件与原始
dist
目录在同一层级
你可以根据需要修改脚本,例如更改输出文件名、压缩级别或加密方式。