我想以一种独立于平台的方式,递归地将一个目录压缩成一个密码加密的7zip存档。
我考虑过使用这些方法,但没有一种是可以接受的:
subprocess调用7zip可执行文件--这很好,但它不是独立于平台的。pylzma/py7zlib模块--它们只处理内存中的数据,我无法想象如何使用它们来压缩目录。发布于 2014-10-04 13:45:08
据我所知,这是不可能的。但是,如果这些目录和文件夹是--只有才会被您编写的软件操作,那么您可以使用compress-a-folder-recursively-as-7z-with-pylzma-and-py7zlib所示的技术创建自己的“自制”7zip版本。这使用tarfile模块将目录树收集到一个文件中,然后使用lzma / pyliblzma模块进行压缩。
不幸的是,普通的Python模块不提供密码保护/加密。但是您可以添加您自己的文件,只需在压缩之前对tarfile数据进行加密。详情请参见Encrypt & Decrypt using PyCrypto AES 256。
发布于 2020-06-28 05:33:11
现在,到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 t.7z。
https://stackoverflow.com/questions/26190631
复制相似问题