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

前端 未结 2 926
囚心锁ツ
囚心锁ツ 2020-12-01 17:14

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?

         


        
相关标签:
2条回答
  • 2020-12-01 18:02

    To offer the exact syntaxt without acronym:

    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'))
    
    0 讨论(0)
  • 2020-12-01 18:10

    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')
    
    0 讨论(0)
提交回复
热议问题