python学习:用 python 实现一个带密码的压缩包 zip 格式 / cli 命令行实现
直接用 pyzipper 实现一个带密码的压缩包
工具: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
自己最新的系统上没有出现这个问题
出错原因
# 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 | 安静模式,不显示各种输出信息 |
arg0 | test-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
brew install sevenzip
7zz a -mx9 1.7z 1.ppt