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

解压的时候文字编码很重要,如果编码不对,会导致文件找不到等错误!

Python提供了多种方法和库来进行文件解压缩。其中一种方法是使用zipfile库,它可以用于解压zip文件。通过引入zipfile库并使用其中的ZipFile类,我们可以轻松地解压zip文件。以下是一个使用zipfile库解压zip文件的示例代码: ``` import zipfile # 创建ZipFile对象,指定要解压缩的zip文件路径 with zipfile.ZipFile('example.zip', 'r') as zip_ref: # 解压所有文件到指定目录 zip_ref.extractall('unzip_folder') # 注意:此处的'example.zip'是待解压缩的zip文件名,'unzip_folder'是要解压缩到的目标文件夹路径 ``` 另外,如果需要解压缩其他类型的文件,比如tar、gz、rar等,可以使用相应的库来进行解压缩。例如,要解压缩.7z文件,可以使用py7zr库,如下所示: ``` import py7zr # 创建SevenZipFile对象,指定要解压缩的.7z文件路径 with py7zr.SevenZipFile('example.7z', 'r') as archive: # 解压缩所有文件到指定目录 archive.extractall(path='unzip_folder') # 注意:此处的'example.7z'是待解压缩的.7z文件名,'unzip_folder'是要解压缩到的目标文件夹路径 ``` 以上代码示例展示了使用zipfile库和py7zr库解压文件的过程。根据你的需求和待解压缩的文件类型,选择适当的库来进行文件解压缩操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python 文件解压缩](https://blog.csdn.net/weixin_45459224/article/details/127120860)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [如何使用Python文件进行压缩与解压缩](https://blog.csdn.net/xff123456_/article/details/123900450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一WILLPOWER一

你的鼓励是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值