为什么 python 不能解压缩由 winrar 使用 zip 方法创建的受密码保护的 zip 文件?

新手上路,请多包涵

我在网上到处搜索,但仍然找不到解决上述问题的方法。有没有人知道为什么,如果是的话如何做到?

 psw="dg"

ZipFile.extractall("data.zip", None, psw)

我遇到的错误:

 TypeError: unbound method extractall() must be called
with ZipFile instance as first argument (got str instance instead)

原文由 wookie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 562
2 个回答

因为你用错了。 :) 来自 文档

压缩文件extractall ([路径[, 成员[, pwd]]])

将存档中的所有成员提取到当前工作目录。 path 指定要提取到的不同目录。 members 是可选的,并且必须是 namelist() 返回的列表的子集。 pwd 是用于加密文件的密码。

所以你应该为 ZipFile 对象调用这个函数,而不是静态方法。并且您不应将存档名称作为第一个参数传递。 :)

这样它会起作用:

 from zipfile import ZipFile

with ZipFile('data.zip') as zf:
    zf.extractall(pwd='dg')

编辑,在较新的版本中使用:

 zf.extractall(pwd=b'dg')

原文由 Bruno Gelb 发布,翻译遵循 CC BY-SA 4.0 许可协议

要提供没有首字母缩略词的确切语法:

 from zipfile import ZipFile

str_zipFile = 'FileZip.zip'
str_pwd= 'xxxx'

with ZipFile(str_zipFile) as zipObj:
  zipObj.extractall(pwd = bytes(str_pwd,'utf-8'))

原文由 Laurent T 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题