python 解压缩文件中文名字乱码解决

方式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

猜你喜欢

转载自blog.csdn.net/qq_37429313/article/details/108123360
今日推荐