why can't python unzip a password protected zip file created by winrar using the zip method?

笑着哭i 提交于 2019-11-26 21:03:37

问题


I have searched the web high and low but still couldn't find a solution for the above problem. Does anyone out there know why and if so how it can be done?

psw="dg"

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

The error that I've got:

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

回答1:


Because you are using it wrong. :) From docs:

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

Extract all members from the archive to the current working directory. path specifies a different directory to extract to. members is optional and must be a subset of the list returned by namelist(). pwd is the password used for encrypted files.

So you should call that this function for ZipFile object, not as static method. And you should not pass name of archive as a first argument. :)

this way it'll work:

from zipfile import ZipFile

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

EDIT, in newer versions use:

zf.extractall(pwd=b'dg')


来源:https://stackoverflow.com/questions/25336859/why-cant-python-unzip-a-password-protected-zip-file-created-by-winrar-using-the

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!