python学习:用 python 实现一个带密码的压缩包 zip 格式 / cli 命令行实现

直接用 pyzipper 实现一个带密码的压缩包
更新于: 2024-04-07 08:13:39

工具:pyzipper

官方文档: https://pypi.org/project/pyzipper/

pip install pyzipper

先看源码

import pyzipper
import glob

files = glob.glob(r'./files/**', recursive=True)

secret_password = b'123123'

with pyzipper.AESZipFile('files.zip',
                         'w',
                         compression=pyzipper.ZIP_STORED,
                         encryption=pyzipper.WZ_AES) as zf:
    zf.setpassword(secret_password)
    for file in files:
        zf.write(file)

坑 Opening encrypted zip files on Catalina MacOSX #18 

自己最新的系统上没有出现这个问题

Mac 无法解压缩

出错原因

# 1. 这个会报错(Mac 下默认不支持这种压缩算法)
compression=pyzipper.ZIP_LZMA
# 2. 用这个
compression=pyzipper.ZIP_STORED

命令行

又一个比较实用的方法。

$ zip -jq test-pzip.zip *.json ./extra-files/assets/docify/* --password 123123
命令解释
-j

-j 选项表示压缩时不存储目录路径,只存储文件名; 

即,没有那种嵌套的多层路径出现在目录的 zip 包中

-q安静模式,不显示各种输出信息
arg0test-pzip.zip: 要打成包的文件名
arg1, arg2,…要添加到 zip 包中的目标文件
-- password添加解压所需的密码

另一个选择

Mac下的 7z的实现。

https://superuser.com/questions/548349/how-can-i-install-7zip-so-i-can-run-it-from-terminal-on-os-x

https://formulae.brew.sh/formula/p7zip

brew install sevenzip
7zz a -mx9 1.7z 1.ppt

参考