我希望以独立于平台的方式递归地将目录压缩为密码加密的7zip存档。
我考虑过使用这些方法,但我认为没有一种方法可以接受:
使用subprocess
直接调用7zip可执行文件 - 这很有用,但它不是独立于平台的。
使用pylzma
/ py7zlib
模块 - 它们仅适用于内存中的数据,我无法想象如何使用它们来压缩目录。
答案 0 :(得分:1)
据我所知,这是不可能的。但是,如果这些目录和文件夹仅将由您编写的软件操纵,您可以使用compress-a-folder-recursively-as-7z-with-pylzma-and-py7zlib中显示的技术创建自己的“自制”7zip版本。这使用tarfile
模块将目录树收集到一个文件中,然后使用lzma / pyliblzma模块进行压缩。
不幸的是,常见的Python LZMA模块不提供密码保护/加密。但是您可以添加自己的,只需在压缩之前加密tarfile数据。有关详细信息,请参阅Encrypt & Decrypt using PyCrypto AES 256。
答案 1 :(得分:0)
现在是2020年6月,可以使用py7zr v0.8.0(https://pypi.org/project/py7zr/)。
pip install py7zr
import py7zr
with py7zr.SevenZipFile('target.7z', 'w', password='secret') as arc:
arc.writeall('.')
然后您可能会看到与Linux,mac和Windows中的7z命令兼容的target.7z。