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中装饰器的一个妙用
Feb 08 Python
python类继承用法实例分析
May 27 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
Python入门之三角函数全解【收藏】
Nov 08 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
Django如何配置mysql数据库
May 04 Python
Python处理session的方法整理
Aug 29 Python
Python上下文管理器用法及实例解析
Nov 11 Python
python绘制BA无标度网络示例代码
Nov 21 Python
Python基础之高级变量类型实例详解
Jan 03 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
python zip,lambda,map函数代码实例
Apr 04 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
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
PHP中的事务使用实例
2015/05/26 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
Js 刷新框架页的代码
2010/04/13 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
Vue+Flask实现简单的登录验证跳转的示例代码
2018/01/13 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
Python生成随机MAC地址
2015/03/10 Python
Python爬虫解析网页的4种方式实例及原理解析
2019/12/30 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
介绍一下代理模式(Proxy)
2014/10/17 面试题
大学生实习自我鉴定
2013/12/11 职场文书
财务方面个人工作的自我评价
2013/12/28 职场文书
化学教学随笔感言
2014/02/19 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
蓝颜请假条
2014/04/11 职场文书
企业承诺书格式
2014/05/21 职场文书
岗位职责说明书模板
2014/07/30 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
红高粱观后感
2015/06/10 职场文书