我在(sav.zip)一个zip文件,我想为它设置一个密码:Python - zipfile:如何为zipfile设置密码?
ZF = zipfile.ZipFile( “sav.zip”)
zf.setpassword(“1234 “)
,但...我得到一个类型错误:预期的字节,得到了海峡
哪里是我的错?
我在(sav.zip)一个zip文件,我想为它设置一个密码:Python - zipfile:如何为zipfile设置密码?
ZF = zipfile.ZipFile( “sav.zip”)
zf.setpassword(“1234 “)
,但...我得到一个类型错误:预期的字节,得到了海峡
哪里是我的错?
它在文档中没有提到,但在Python 3中,密码应该是bytes
,而不是str
。所以:
zf.setpassword(b"1234")
注意密码是只用于阅读,不写!参见ZipFile.open
文档字符串在Python 3.
ZipFile
的类可以读“PKZIP 2.0”加密,这不被认为是非常强(它具有known weaknesses [PDF])。这可能是编写它们目前不是Python(如Python 2.7.13和3.6)在Python中实现的原因。
注意:由zipfile上的密码提供的保护可能不是非常强大,具体取决于您要使用的密码。攻击者可以例如替换不知道密码在密码保护条目中的zip文件!见例如this answer on security.stackexchange。
注2:更新版本的例如winzip可以使用AES来加密压缩文件的内容。 AFAIK,Python无法阅读这些。
请阅读[ZipFile.setpassword()']的文档(https://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.setpassword)。它不会做你认为它做的事。 – Chris
试试这个'zf.setpassword(b“1234”)',基本上密码参数应该是字节而不是字符串。 –
通过“设置密码”是否要将其转换为受密码保护的zip文件,还是已经有密码保护,并且您想设置读取密码? – tdelaney