【Python小随笔】解压压缩包(处理中文乱码问题)

PythonNew_Mr.Wang / 2024-01-18 / 原文

支持中文编码

from zipfile import ZipFile

def support_gbk(zip_file):
    name_to_info = zip_file.NameToInfo
    # copy map first
    for name, info in name_to_info.copy().items():
        real_name = name.encode('cp437').decode('gbk')
        if real_name != name:
            info.filename = real_name
            del name_to_info[name]
            name_to_info[real_name] = info
    return zip_file

解压压缩包

def decompression(path):
    extract_to = os.path.dirname(path)  # 获取zip文件的目录路径
    with support_gbk(ZipFile(path)) as zfp: # 解压当前压缩包
        zfp.extractall(extract_to)