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

时间:2014-08-16 04:10:42

标签: python zip zipfile

我搜索了网络的高低,但仍无法找到解决上述问题的方法。有没有人知道为什么以及如果可以做到这一点?

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)

2 个答案:

答案 0 :(得分:20)

因为你错了。 :)来自docs

  

ZipFileextractall([路径[,成员[,pwd]]])

     

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

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

这样就可以了:

from zipfile import ZipFile

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

答案 1 :(得分:1)

要提供不带缩写的确切语法:

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'))