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

woo*_*kie 5 python zip zipfile

我在网上搜索得很高,但仍无法找到解决上述问题的方法.有没有人知道为什么以及如果可以这样做?

psw="dg"

ZipFile.extractall("data.zip", None, psw)
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

TypeError: unbound method extractall() must be called
with ZipFile instance as first argument (got str instance instead)
Run Code Online (Sandbox Code Playgroud)

Bru*_*elb 20

因为你错了.:)来自docs:

ZipFile.extractall([path [,members [,pwd]]])

将存档中的所有成员解压缩到当前工作目录. path指定要提取的其他目录.成员是可选的,必须是namelist()返回的列表的子集.pwd是用于加密文件的密码.

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

这样它会起作用:

from zipfile import ZipFile

with ZipFile('data.zip') as zf:
    zf.extractall(pwd='dg'
Run Code Online (Sandbox Code Playgroud)

  • 对@wookie 关于 ZipFile 为何如此缓慢的老问题的回答:文档指出`解密非常慢,因为它是用原生 Python 而不是 C 实现的。` (4认同)
  • 它实际上是zf.extractall(pwd = b'dg') (4认同)