我搜索了网络的高低,但仍无法找到解决上述问题的方法。有没有人知道为什么以及如果可以做到这一点?
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)
答案 0 :(得分:20)
因为你错了。 :)来自docs:
ZipFile。extractall([路径[,成员[,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'))