简体   繁体   中英

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"

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

请注意,只有在设置密码时使用“Zip legacy encryption”选项对 zip 文件进行加密时,这才有效。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM