python解压zip包中文乱码解决方法


Posted in Python onNovember 27, 2020

乱码得原因:

由于ZipFile模块导出遇到中文解码不对,windows上会出现,linux是否会出现不知道没测试过。 

解决方式:

1. 搞个文件名引射表(不太方便,少量文件夹套用时候还可以)

2. 修改源码解码格式(不太方便,自己搞了一下,之后报其他错误)

3. 自己写入文件,自己创建文件夹(推荐)

自己创建的写法:

with zipfile.ZipFile(file=zip_save_path, mode='r') as zf:
      # 解压到指定目录,首先创建一个解压目录
      os.mkdir(unzip_dir_path)
      for old_name in zf.namelist():
        # 获取文件大小,目的是区分文件夹还是文件,如果是空文件应该不好用。
        file_size = zf.getinfo(old_name).file_size
        # 由于源码遇到中文是cp437方式,所以解码成gbk,windows即可正常
        new_name = old_name.encode('cp437').decode('gbk')
        # 拼接文件的保存路径
        new_path = os.path.join(unzip_dir_path, new_name)
        # 判断文件是文件夹还是文件
        if file_size > 0:
          # 是文件,通过open创建文件,写入数据
          with open(file=new_path, mode='wb') as f:
            # zf.read 是读取压缩包里的文件内容
            f.write(zf.read(old_name))
        else:
          # 是文件夹,就创建
          os.mkdir(new_path)

结果正常:

python解压zip包中文乱码解决方法

以上就是python解压zip包中文乱码解决方法的详细内容,更多关于python 解压zip包中文乱码的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python生成日历实例解析
Aug 21 Python
Python中的random()方法的使用介绍
May 15 Python
python删除列表内容
Aug 04 Python
python实现微信自动回复功能
Apr 11 Python
浅谈numpy生成数组的零值问题
Nov 12 Python
如何实现Django Rest framework版本控制
Jul 25 Python
python控制台实现tab补全和清屏的例子
Aug 20 Python
对python while循环和双重循环的实例详解
Aug 23 Python
Python中if有多个条件处理方法
Feb 26 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
python在一个范围内取随机数的简单实例
Aug 16 Python
python自动生成sql语句的脚本
Feb 24 Python
python 实现控制鼠标键盘
Nov 27 #Python
Python模拟键盘输入自动登录TGP
Nov 27 #Python
python操作toml文件的示例代码
Nov 27 #Python
Python GUI库Tkiner使用方法代码示例
Nov 27 #Python
Python爬虫爬取有道实现翻译功能
Nov 27 #Python
python爬虫中采集中遇到的问题整理
Nov 27 #Python
python 用opencv实现图像修复和图像金字塔
Nov 27 #Python
You might like
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
简单的php文件上传(实例)
2013/10/27 PHP
php 中文字符串首字母的获取函数分享
2013/11/04 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
PHP中Array相关函数简介
2016/07/03 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
2016/09/22 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
JMenuTab简单使用说明
2008/03/13 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
JS获取单击按钮单元格所在行的信息
2014/06/17 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
2018/05/16 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
javascript实现多边形碰撞检测
2020/10/24 Javascript
Python跨文件全局变量的实现方法示例
2017/12/10 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
Python实现图片添加文字
2019/11/26 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
资源环境与城市管理专业推荐信
2013/11/30 职场文书
自我评价范文点评
2013/12/04 职场文书
大学生学习党课思想汇报
2014/01/03 职场文书
施工质量承诺书范文
2014/05/30 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android