最近用到zipfile这个库,发现中文名解压缩出来有问题,在参考了中文解压缩的代码后再进行了一些改进,所以mark一下。
该函数输入原zip文件路径file_path,和新文件夹路径new_path即可解压缩。
直接上代码:
import os
import zipfile
def zip_decompress(file_path, new_path):
'''支持中文的解压缩程序
file_path:原zip文件路径
new_path:新文件夹路径
'''
z = zipfile.ZipFile(f'{file_path}', 'r')
z.extractall(path=f"{new_path}")
for root,dirs,files in os.walk(new_path):
for d in dirs:
try:
new_dname = d.encode('cp437').decode('gbk')
os.rename(os.path.join(root, d), os.path.join(root, new_dname))
except:
new_dname = d.encode('cp437').decode('utf-8')
os.rename(os.path.join(root, d), os.path.join(root, new_dname))
for root,dirs,files in os.walk(new_path):
for f in files:
try:
new_name = f.encode('cp437').decode('gbk')
os.rename(os.path.join(root, f), os.path.join(root, new_name))
except:
new_name = f.encode('cp437').decode('utf-8')
os.rename(os.path.join(root, f), os.path.join(root, new_name))
z.close()
# print('完成!')



