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批量修改文件后缀示例代码分享
Dec 24 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
python进行TCP端口扫描的实现
Dec 21 Python
python matplotlib画图库学习绘制常用的图
Mar 19 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
Jun 28 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
python3 使用traceback定位异常实例
Mar 09 Python
Python Numpy中数据的常用保存与读取方法
Apr 01 Python
基于keras中的回调函数用法说明
Jun 17 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
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
服务器上配置PHP运行环境教程
2015/02/12 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
phpfpm的作用和用法
2019/10/10 PHP
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
js闭包用法实例详解
2016/12/13 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
Python实现基本线性数据结构
2016/08/22 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
python 循环数据赋值实例
2019/12/02 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
教职工代表大会主持词
2014/04/01 职场文书
甘南现象心得体会
2014/09/11 职场文书
投标承诺函范文
2015/01/21 职场文书
导游词欢迎词
2015/02/02 职场文书
委托收款证明
2015/06/23 职场文书
MySql数据库 查询时间序列间隔
2022/05/11 MySQL