关于 zip 解压乱码问题
关于 zip 解压乱码问题
zipfile 会将所有文件名用 CP437 来编码
先用 CP437 编码 encode 成 bytes,再以 gbk 格式解码成中文 string
from pathlib import Path
import zipfile
def un_zip(zip1_path,zip_un_path):
"""
压缩到当前 pytcharm 这个文件夹
解压文件.zip
:param zip1_path: 需要解压的文件
:param zip_un_path: 解压文件到哪里
:return:
"""
with zipfile.ZipFile(zip1_path,“r”)as zip_f:
for file in zip_f.namelist():
print(“file 编码前 ==”,file)
# print(“dd”,zip_f.extract(file,zip_un_path))
ex_path = Path(zip_f.extract(file,zip_un_path))
# print(“ex_path”,ex_path)
ex_path.rename(file.encode(‘cp437’).decode(‘gbk’))