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使用mysqldb连接数据库操作方法示例详解
Dec 03 Python
Python群发邮件实例代码
Jan 03 Python
Python中endswith()函数的基本使用
Apr 07 Python
详解Python命令行解析工具Argparse
Apr 20 Python
python调用OpenCV实现人脸识别功能
May 25 Python
django项目搭建与Session使用详解
Oct 10 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
Django在pycharm下修改默认启动端口的方法
Jul 26 Python
python线程中的同步问题及解决方法
Aug 29 Python
pygame实现俄罗斯方块游戏(AI篇2)
Oct 29 Python
解决使用Pandas 读取超过65536行的Excel文件问题
Nov 10 Python
Django中使用Celery的方法步骤
Dec 07 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实现的漂亮分页方法
2014/04/17 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
文字幻灯片
2006/06/26 Javascript
javascript编程起步(第五课)
2007/02/27 Javascript
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
jQuery 操作下拉列表框实现代码
2010/02/22 Javascript
限制文本框输入N个字符的js代码
2010/05/13 Javascript
一个javascript图片阅览组件
2010/11/09 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
2010/12/02 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
Python中使用动态变量名的方法
2014/05/06 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
django实现分页的方法
2015/05/26 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
python版本单链表实现代码
2018/09/28 Python
python提取log文件内容并画出图表
2019/07/08 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
2014国培学习感言
2014/03/05 职场文书
爱国主题班会教案
2015/08/14 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript