使用zipfile解压文件时,出现了中文乱码问题,具体解决方法有两个,直接上代码吧。
def deco_zip(path, file_path): os.mkdir(file_path)# 方式一 with zipfile.ZipFile(path, 'r') as zipTools: # 从内存保存到硬盘再使用gbk编码读取出来避免乱码, name_list = [item.encode('cp437').decode('gbk') for item in zipTools.namelist()] print(name_list) for index, value in enumerate(zipTools.namelist()): print(index,value,type(value)) if not index: #过滤掉第一个 第一个为文件夹名 continue path1 = os.path.join(file_path, os.path.basename(name_list[index])) # 取出对应的文件名 data = zipTools.read(value) with open(path1, "wb") as f: f.write(data) # 转存为新的文件 # 方式二(推荐使用,具体使用方法请点我) # with zipfile.ZipFile(path, 'r') as f: # for fn in f.namelist(): # extracted_path = Path(f.extract(fn)) # extracted_path.rename(fn.encode('cp437').decode('gbk'))