如何将目录压缩为7zip密码加密存档?

时间:2014-10-04 07:21:01

标签: python compression 7zip password-encryption

我希望以独立于平台的方式递归地将目录压缩为密码加密的7zip存档。

我考虑过使用这些方法,但我认为没有一种方法可以接受:

  1. 使用subprocess直接调用7zip可执行文件 - 这很有用,但它不是独立于平台的。

  2. 使用pylzma / py7zlib模块 - 它们仅适用于内存中的数据,我无法想象如何使用它们来压缩目录。

    < / LI>

2 个答案:

答案 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。