2010-02-03 150 views

回答

5

提取很简单,你只需要使用python 2.6引入的zipfile.ZipFile.setpassword(),但是标准的python库不支持创建加密的zip文件。

有商业上可用的Python库,它支持创建加密和密码保护的zip文件。如果你想使用免费的东西,你需要使用标准的zip命令行工具。

拉链-e -Ppassword filename.zip的fileA FILEB ...

+1

Bollocks。 “”“ZipFile.setpassword(pwd) 将pwd设置为默认密码以提取加密文件。“”“” 它不会**创建​​一个带有密码的邮编 – 2010-03-01 12:46:45

+0

感谢提及约翰,我已经更新了条目来提到命令行实用程序解决方案 – 2010-03-02 21:04:37

+0

我没有看到' -p''zip --help | grep -i -e'-p''不会返回任何结果(Ubuntu,Zip 3.0(2008年7月5日),Info-ZIP)我使用open-源解决方案在我的答案:http://stackoverflow.com/questions/2195747/python-code-to-create-a-password-encrypted-zip-file/2366917#2366917 – jfs 2010-03-02 21:44:47

1

如果Python是不是必须的,你可以使用系统工具,工具,如ZIP或RAR提供了密码加密压缩。带-e选项的邮编,以及带-p的rar

+2

你甚至可以从子进程调用这些工具从python .Popen – Nikwin 2010-03-01 15:18:28

22

要使用开源7-Zip工具创建加密的ZIP压缩文件(名为'myarchive.zip'):

rc = subprocess.call(['7z', 'a', '-pP4$$W0rd', '-y', 'myarchive.zip'] + 
        ['first_file.txt', 'second.file']) 

要安装的7-Zip ,类型:

$ sudo apt-get install p7zip-full 

用手解压缩(为了阐明用拉链utitity兼容性),类型:

$ unzip myarchive.zip 

而在提示时输入P4$$W0rd

或者在Python 2.6+相同:

>>> zipfile.ZipFile('myarchive.zip').extractall(pwd='P4$$W0rd') 
+2

+1 7-Zip也可以在Windows上运行,它支持很多压缩/存档格式,而不仅仅是zip。 – 2010-03-02 22:22:59

+0

zipfile.ZipFile不会创建一个加密的zip文件,它只能从加密的zip文件中读取。如链接所述。 – shadowbq 2014-12-08 20:15:56

+0

@shado wbq:是的。 'ZipFile'可以*提取*(* unzip *)加密的档案。如果它可以创建加密的档案;你不需要'7z'工具。 'pyminizip'在2010年不存在。我不知道'pyminizip'有多么方便(安装)或可靠(与'7z'相比) - 它的开发状态是* alpha *。 – jfs 2014-12-12 16:25:34

0

您可以使用Pygpgme创建一个密码保护的GPG文件,该文件被压缩。

你需要使用的 相当于GPG -c MYFILE 或 GPG --symmetric MYFILE 和 GPG myFile.gpg

我不知道是什么等同是Python模块中,但是我知道他们自0.2版以来就已经存在了。有一个错误报告,然后提到缺乏它,但有人发布了一个补丁,他们修复了0.2版本。

这使用对称加密,所以你不必担心键。

你可能会发现我的帖子询问如何在UbuntuForums上使用它。如果您知道,请随时回答。