2014-10-04 85 views
0

我想以独立于平台的方式递归地将目录压缩到密码加密的7zip压缩文件中。如何将目录压缩为7zip密码加密存档?

我认为使用这些方法,但他们没有,我发现接受:

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

  2. 使用pylzma/py7zlib模块 - 它们只对已经在内存中的数据起作用,我无法想象如何使用它们来压缩目录。

+0

我想你不想走目录树并将所有内容都读入内存来压缩它。 :)另一种方法是讨论[这里](http://stackoverflow.com/questions/13130634/compress-a-folder-recursively-as-7z-with-pylzma-and-py7zlib) – 2014-10-04 12:22:46

+0

@ PM2Ring不,连接文件在记忆不是我的意图。我只是寻找一个右键单击目录 - > 7-Zip - >添加到档案的脚本变体。您发布的链接不会讨论密码保护或加密,答案并未提及7-Zip。 – 2014-10-04 13:09:58

+0

不,它不完全是7-Zip:链接的方法会创建一个LZMA压缩tar归档文件,它应该提供与标准7zip文件类似的压缩比率。但是,它当然需要定制软件来读写。我对各种Python LZMA模块并不熟悉,但是我通过Google的快速查看发现,它们不提供密码保护/加密。当然,增加这种保护本身并不难,但再一次,它不会与标准的7-Zip实用程序兼容。好吧。 – 2014-10-04 13:26:06

回答

1

据我所见,这是不可能的。但是,如果这些目录和文件夹是只有将由您编写的软件操纵,您可以使用compress-a-folder-recursively-as-7z-with-pylzma-and-py7zlib中显示的技术创建自己的“自制”7zip版本。这使用tarfile模块将目录树收集到单个文件中,然后使用lzma/pyliblzma模块执行压缩。

不幸的是,常见的Python LZMA模块不提供密码保护/加密。但是,您可以添加自己的,只需在压缩之前加密tarfile数据即可。详情请参阅Encrypt & Decrypt using PyCrypto AES 256

+0

好吧,我最终将路径传递给7z可执行文件作为我的脚本的参数。 – 2014-10-05 11:32:27