我在 (sav.zip) 中有一个 zipfile,我正在尝试为其设置密码:
zf = zipfile.ZipFile("sav.zip")
zf.setpassword("1234")
但我得到一个TypeError: expected Bytes, got str
.
我的错在哪里?
我在 (sav.zip) 中有一个 zipfile,我正在尝试为其设置密码:
zf = zipfile.ZipFile("sav.zip")
zf.setpassword("1234")
但我得到一个TypeError: expected Bytes, got str
.
我的错在哪里?
文档中没有提到,但是在 Python 3 上,密码应该是bytes
,而不是str
. 所以:
zf.setpassword(b"1234")
请注意,密码仅用于读取,不用于写入!请参阅ZipFile.open
Python 3 中的文档字符串。
该ZipFile
课程可以阅读“pkzip 2.0”加密,这被认为不是很强(它有已知的弱点[pdf])。这可能是目前(从 Python 2.7.13 和 3.6 开始)没有在 Python 中实现编写它们的原因。
注意: zipfile 上的密码所提供的保护可能不是很强,这取决于您要使用它的目的。例如,攻击者可以在不知道密码的情况下替换zip 文件中受密码保护的条目!参见security.stackexchange 上的这个答案。
注意2:更新版本的例如 winzip 可以使用 AES 加密压缩文件的内容。AFAIK,Python 无法读取这些。