Python解决Zipfile文件解压中文乱码

这篇具有很好参考价值的文章主要介绍了Python解决Zipfile文件解压中文乱码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python解决Zipfile文件解压中文乱码

背景

在上一篇文章我们学习了如何在浏览器中下载文件:Selenium修改默认下载文件路径,最后下载的文件是压缩包的形式,我们想要分析数据就需要涉及到解压文件,在这里我们使用Zipfile包来实现压缩文件的解压操作。这个过程中遇到一个比较麻烦的问题就是解压的文件名包括中文,所以导致发生乱码现象,于是这里分享一下怎么去处理乱码问题。

中文乱码问题

异常解压

原目录下文件为:20230118110026_645.zip

Python解决Zipfile文件解压中文乱码

执行代码-解压文件:
import zipfile


def main():
    file_zip = zipfile.ZipFile('D:/CSDN/DataDownload/20230118110026_645.zip')
    # namelist()列表形式显示压缩文件”20230118110026_645.zip“中的所有文件名
    # for语句遍历文件名
    for file in file_zip.namelist():
        # 解压文件到指定路径下“D:\CSDN\DataDownload”
        file_zip.extract(file, r'D:\CSDN\DataDownload')
    print('解压完成')


main()

此时目录下显示内容为文件名乱码:
Python解决Zipfile文件解压中文乱码

问题分析以及解决方案

问题分析

zip标准中,对文件名的encoding用的不是unicode,而是系统的默认字符集;中文windows采用的GBK编码,因此不是这种编码方式则会出现中文乱码的形式,在这里我们将源文件zipfile.py(这里我的路径是在D:\Python\Python311\Lib目录下)找到下面这两个地方并且进行修改:

问题解决

filename = filename.encode("cp437").decode('gbk') 

Python解决Zipfile文件解压中文乱码

fname_str = fname_str.encode("cp437").decode('gbk')  # ---0211修改

Python解决Zipfile文件解压中文乱码
保存后,切换到程序页面,再次执行,此时文件名正常显示,包括下级目录皆正常:
Python解决Zipfile文件解压中文乱码

知识拓展

解压完成后删除原zip文件,节省内存:

import os
import zipfile


def main():
    file_zip = zipfile.ZipFile('D:/CSDN/DataDownload/20230118110026_645.zip')
    # namelist()列表形式显示压缩文件”20230118110026_645.zip“中的所有文件名
    # for语句遍历文件名
    for file in file_zip.namelist():
        # 解压文件到指定路径下“D:\CSDN\DataDownload”
        file_zip.extract(file, r'D:\CSDN\DataDownload')
    file_zip.close()
    # 删除zip文件
    os.remove('D:/CSDN/DataDownload/20230118110026_645.zip')
    print('解压完成')


main()

总结

有的时候出现问题后,往往是我们把问题想的太复杂,甚至想通过自己写方法去转译,当然如果能写出来最好,但对于初学者,能简单快速的解决问题不仅能给我们自信,还可以帮助我们积累解决问题的经验。文章来源地址https://www.toymoban.com/news/detail-431353.html

到了这里,关于Python解决Zipfile文件解压中文乱码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python ZIpFile 解惑:GBK 编码与乱码现象

    项目 描述 维基百科 ZIP 格式 Python 官方文档 zipfile - 使用ZIP存档 搜索引擎 Google 、 Bing Zip 文件格式规范 APPNOTE.TXT 维基百科 首页 百度百科 首页 项目 描述 Python 3.10.6 操作系统 Windows 10 专业版(x86-64) 压缩软件 360压缩(4.0.0.1460) 本部分内容为铺垫内容,除 “乱码现象” 为必看

    2024年02月01日
    浏览(36)
  • 解决打开 json 文件中文乱码的问题

      如下图,pycharm 打开是下面的样子 右下角的编码尝试了好久,依然打不开 用代码打开就成功了  控制台结果:

    2024年01月19日
    浏览(48)
  • 解决idea文件properties中文乱码问题

    有时候将项目代码拉取至本地用idea打开时会出现中文乱码问题,遇到这种问题不要慌,重新设置一下编码为UTF-8即可。那么如何将idea的编码统一设置为UTF-8格式呢?接下来我们一一解决此类问题 有时候会看到打开的文件已经出现了乱码问题,这时有的朋友就开始慌了,不要慌

    2024年02月11日
    浏览(48)
  • 解决文件下载中文文件名乱码的最佳实践

    如果下载的文件名包含中文,有时浏览器可能无法正确显示文件名,而会显示乱码或者一串数字和字母。这个问题可以通过设置 Content-Disposition 响应头的 filename 参数来解决,该参数可以指定要下载的文件名,并且支持URL编码。 下面是一个示例代码,演示了如何在Java Web中设置

    2024年02月08日
    浏览(62)
  • 完全解决FTP上传文件名称中文乱码问题

    今天项目上加了个定时扫描本地文件路径下所有文件实现自动上传至ftp文件服务器的功能,经测试发现一旦上传中文名称的文件就会乱码或者文件上传不了。初步排查就是FTP服务器字符编码的问题。在网上查了很多资料都没有效果。在这里讲一下我踩过的坑,以及分享我能上

    2024年02月13日
    浏览(56)
  • Java读取properties文件中文乱码(已解决)

    初用properties,读取java properties文件的时候如果value是中文,会出现 乱码 的问题。 在项目的默认路径(src目录)下创建 sk.properties 属性文件(名称可以自定义,扩展名必须为 properties )。 上面的程序执行后的结果会出现中文乱码,因为字节流是无法读取中文的,所以采取read

    2024年02月11日
    浏览(37)
  • 解决DBeaver打开csv文件中文乱码问题

    ①将excel文件进行另存为,保存类型选择【CSV UTF-8】 ②之后在DBeaver进行数据导入,选择【导入数据——选择csv文件——将编码类型手动改为UTF-8】 ③选择下一步,若【表映射——预览数据】中没有出现乱码。大概率会导入成功。 ④若导入完成后,只展示了表结构而没有具体

    2024年01月18日
    浏览(58)
  • 用VSCode打开文件出现中文乱码的解决办法

    在使用VScode过程中,用其他编辑器写好的文件通过VSCode打开,如果有中文,可能会有乱码现象。(可能有其他原因,多试几次找到最佳方法) 下面有两种解决办法。 点击右下角中的“UTF-8”,选择“Reopon with Encoding(通过编码重新打开)”,输入“GB 2312”,选择“Simplified

    2024年02月12日
    浏览(45)
  • Java下载excel文件名中文乱码解决

    我是一名充满激情的程序员,💻希望和大家一起学习进步!我热爱编程,对技术充满好奇心和求知欲! 🗣️无论你是新手还是老手,都能从我的博客中获得有价值的内容! 🚀让我们一起努力,成为更优秀的程序员吧!💪💻 当使用Java下载Excel文件时,有时会遇到文件名中

    2024年02月07日
    浏览(59)
  • Java文件下载中文文件名乱码的解决方案

      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作

    2024年02月13日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包