Taewoo.Lim
Taewoo.Lim

Reputation: 223

Getting "TypeError: pwd: expected bytes, got str" when extracting zip file with password

I want to unzip a specific named file located in a specific directory.

The name of the file = happy.zip.
The location = C:/Users/desktop/Downloads.

I want to extract all the files to C:/Users/desktop/Downloads(the same location)

I tried:

import zipfile
import os
in_Zip = r"C:/Users/desktop/Downloads/happy.zip"
outDir = r"C:/Users/desktop/Downloads"
z = zipfile.ZipFile(in_Zip, 'r')
z.extractall(outDir, pwd='1234!')
z.close

But I got:

"TypeError: pwd: expected bytes, got str"

Upvotes: 3

Views: 8942

Answers (2)

Ashish Bamania
Ashish Bamania

Reputation: 41

Please note that this will only work if the zip file has been encrypted using the "Zip legacy encryption" option when setting up the password.

Upvotes: 0

Mohd
Mohd

Reputation: 5613

In Python 2: '1234!' = byte string

In Python 3: '1234!' = unicode string

Assuming you are using Python 3, you need to either use b'1234!' or encode the string to get byte string using str.encode() this is useful if you have the password saved as a string passwd = '1234!' then you can use:

z.extractall(outDir, pwd=passwd.encode())

or use byte string directly:

z.extractall(outDir, pwd=b'1234!')

Upvotes: 7

Related Questions