方式1
解压文名字乱码是因为在解压缩的时候,默认了一种解码,那就是cp437
,因此要解决这个问题,首先要将解码出来的再次加密回去,在用gbk
解码出来。
因为已经解压缩出来了,不能再通过解压缩来完成上述步骤(除非修改源码),这里采用遍历文件夹方式将文件名字改为正常中文
#传进入完整的文件夹名称,将名字格式进行更替
def namessolve(folderpath):
for dirpath, dirnames, filenames in os.walk(folderpath): #进入需要改正名字的文件夹
for filename in filenames:
try:
newfilename = filename.encode('cp437').decode('gbk') #尝试对文件名字进行编码解码
filefullpath = os.path.join(dirpath,filename) #如果成功,则将文件原始路径算出
newfilefullpath = os.path.join(dirpath,newfilename)
os.rename(filefullpath,newfilefullpath) #将名字进行替换
except:
print('文件更名失败!')
for dirname in dirnames:
try:
newdirname = dirname.encode('cp437').decode('gbk')
dirfullpath = os.path.join(dirpath,dirname)
newdirfullpath = os.path.join(dirpath,newdirname)
os.rename(dirfullpath,newdirfullpath) #将名字进行替换
except:
print('文件夹更名失败!')
此遍历方式有问题,不能完整遍历完,最好使用文件夹递归调用方式
方式2
找到Python安装文件夹 进入lib 找到zipfile.py源码
将此文件中的cp437
替换为gbk
解压的时候文字编码很重要,如果编码不对,会导致文件找不到等错误!