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

乱码得原因:

由于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包中文乱码的资料请关注我们其它相关文章!

(0)

相关推荐

  • 解决python3中解压zip文件是文件名乱码的问题

    在zip标准中,对文件名的 encoding 用的不是 unicode,而可能是各种软件根据系统的默认字符集来采用(此为猜测),因此zipfile中根据文件 flag 检测的时候,只支持 cp437 和 utf-8. 具体就是查找 zipfile.py 源代码找到下面的代码: 1: if flags & 0x800: 2: # UTF-8 file names extension 3: filename = filename.decode('utf-8') 4: else: 5: # Histo

  • python下解压缩zip文件并删除文件的实例

    利用python下载数据,下载下来的数据为zip格式,因为有上千个这样的文件,因此便直接在爬虫程序里加入了解压缩zip文件的内容,并且因为数据量较大,为了节省空间,便在解压缩后立即删除该zip文件. 先来介绍解压缩的方法: import zipfile filename = '/home/username/work/1.zip' fz = zipfile.ZipFile(filename, 'r') for file in fz.namelist(): fz.extract(file, path

  • Python脚本破解压缩文件口令实例教程(zipfile)

    zipfile模块是python中一个处理压缩文件的模块,解决了不少我们平常需要处理压缩文件的需求 ,本文主要谈谈zipfile几个常用的用法. 环境:Windows python版本2.7.15 Python中操作zip压缩文件的模块是 zipfile . 相关文章:Python中zipfile压缩文件模块的使用 我们破解压缩文件的口令也是用的暴力破解方法.我们提前准备好密码字典用来爆破,如果密码字典中存在密码,则会打印出该密码,否则提示密码字典中无密码. main()函数用来打开密码字典 k

  • python批量解压zip文件的方法

    这是一个用python写解压大量zip脚本的说明,本人新手一个,希望能对各位有所启发. 首先要注意的,在运行自己的脚本之前一定先备份或者复制出一些样本进行测试,不然出错会很麻烦: 之后我用到的是解压zip文件的扩展包zipfile,可以直接pip安装或者在IDE里安装,需要特别注意的是这个包的文件名解码方式需要我们去修改,先去查看源文件,直接搜索"cp437"(一个编码方式),找到后全部替换为"gbk",即可解决中文显示问题. 代码: import os impor

  • Python实现压缩文件夹与解压缩zip文件的方法

    本文实例讲述了Python实现压缩文件夹与解压缩zip文件的方法.分享给大家供大家参考,具体如下: 直接上代码 #coding=utf-8 #甄码农python代码 #使用zipfile做目录压缩,解压缩功能 import os,os.path import zipfile def zip_dir(dirname,zipfilename): filelist = [] if os.path.isfile(dirname): filelist.append(dirname) else : for

  • python解决Fedora解压zip时中文乱码的方法

    前言 很多时候在windows下压缩文件没问题,但是到了Linux下,出现乱码,很常见.以前在Ubuntu下,用`unzip -O GBK filename.zip` 就可以搞定. 换了Fedora后,暂时没发现乱码的压缩文件.晚上下载一本书的光盘,又碰到了乱码.尝试之前的方法没成功.看了下unzip的help,没-O那个参数了== 刚好找到一个用python解决的办法,分享下. 新建一个`.py`后缀的文件,直接复制粘贴代码: #!/usr/bin/env python # -*- codin

  • Python解压 rar、zip、tar文件的方法

    Q1 :如何解压 rar 压缩包文件? A : Step1:检查是否有 rarfile 第三方库,若没有该模块,则需要进行安装 : Step2:参考代码如下: import rarfile import os rar=rarfile.RarFile(filename, mode='r') # mode的值只能为'r' # 判断同名文件夹是否存在,若不存在则创建同名文件夹 if os.path.isdir(os.path.splitext(filename)[0]): rf_list = rf.n

  • Python实现压缩与解压gzip大文件的方法

    本文实例讲述了Python实现压缩与解压gzip大文件的方法.分享给大家供大家参考,具体如下: #encoding=utf-8 #author: walker #date: 2015-10-26 #summary: 测试gzip压缩/解压文件 import gzip BufSize = 1024*8 def gZipFile(src, dst): fin = open(src, 'rb') fout = gzip.open(dst, 'wb') in2out(fin, fout) def gun

  • Python实现压缩和解压缩ZIP文件的方法分析

    本文实例讲述了Python实现压缩和解压缩ZIP文件的方法.分享给大家供大家参考,具体如下: 有时我们需要在 Python 中使用 zip 文件,而在1.6版中,Python 就已经提供了 zipfile 模块可以进行这样的操作.不过 Python 中的 zipfile 模块不能处理多卷的情况,不过这种情况并不多见,因此在通常情况下已经足够使用了.下面我只是对一些基本的 zipfile 操作进行了记录,足以应付大部分的情况了. zipfile 模块可以让你打开或写入一个 zip 文件.比如: i

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

    乱码得原因: 由于ZipFile模块导出遇到中文解码不对,windows上会出现,linux是否会出现不知道没测试过. 解决方式: 1. 搞个文件名引射表(不太方便,少量文件夹套用时候还可以) 2. 修改源码解码格式(不太方便,自己搞了一下,之后报其他错误) 3. 自己写入文件,自己创建文件夹(推荐) 自己创建的写法: with zipfile.ZipFile(file=zip_save_path, mode='r') as zf: # 解压到指定目录,首先创建一个解压目录 os.mkdir(u

  • Maven发布Jar包中文乱码解决方法

    Maven deploy 乱码 今天使用Maven发布Jar包时,发布功能都是正常的也成功上传到了仓库,就是项目跑越来后出中文中现了乱码: { "code": "SUCCESS", "success": true, "message": "鎿嶄綔鎴愬姛", "data": [ { "key": "app_force_login", "va

  • wxPython窗口中文乱码解决方法

    本文实例讲述了wxPython窗口中文乱码解决方法,分享给大家供大家参考.具体方法如下: 文件保存为 utf-8 文件开头添加 # -*- coding: utf-8 -*- 在有中文字符串前加u或U,例如:u"我的网站:http://www.jb51.net" 示例如下: 复制代码 代码如下: # -*- coding: utf-8 -*- import wx class App(wx.App):       def OnInit(self):         frame = wx.

  • Spring MVC参数传递中文乱码解决方法分享

    概述 中国特色社会主义乱码问题是我们经常会碰到的问题,解决的办法有很多,本文分别介绍了GET方式和POST方式中文乱码解决方案中一劳永逸的办法. GET提交中文乱码解决方案 在乱码的Controller文件中采用下面的方法将编码转换成UTF-8 String str = new String(request.getParameter("参数名").getBytes("iso-8859-1"), "utf-8"); 修改项目所在的Tomcat服务器

  • 远程linux xshell下输出中文乱码解决方法

    使用xshell登录中文版CentOS或者redhat时,在xshell下如果输出的是中文的话可能会显示乱码,通过如下办法可以有效的解决乱码问题 linux中文乱码解决方法如下: 复制代码 代码如下: [root@localhost ~]# cd /etc/sysconfig/ [root@localhost sysconfig]# cp i18n i18n.bak #备份i18n文件 [root@localhost sysconfig]# echo "" >i18n [root

  • PHP json_encode中文乱码解决方法

    相信很多人在使用Ajax与后台php页面进行交互的时候都碰到过中文乱码的问题.JSON作为一种轻量级的数据交换格式,备受亲睐,但是用PHP作为后台交互,容易出现中文乱码的问题.JSON和js一样,对于客户端的字符都是以UTF8的形式进行处理的,也就是说,使用JSON作为提交和接收的数据格式时字符都采用UTF8编码处理,当我们的页面编码和数据库编码不是采用UTF8的时候,就极容易出现中文乱码的问题.解决办法自然是在用js或者PHP处理JSON数据的时候都采用UTF8的形式. PHP5.2或以上的版

  • idea中使用Inputstream流导致中文乱码解决方法

    1.问题描述 idea中使用Inputstream流导致中文乱码解决方法,当然也不一定就是输入流,可能输出流或者其他用到了流相关的字符的都可能出现乱码,这里有一个可能的解决办法. 2. 解决办法 ① idea中找到下面的路径 File--Settings--Editor--File Encodings ② Transparent native-to-ascii conversion把这个前面勾上,重新创建文件,执行就OK 很多朋友遇到Java FileInputStream读中文乱码问题,下面小

  • fiddler使用方法之Fiddler显示IP,Fiddler中文乱码解决方法以及fiddler模拟发送get/post请求

    Fiddler是一个HTTP的调试代理,以代理服务器的方式,监听系统的Http网络数据流动,是我们常用的抓包工具之一 今天为大家分享一下几个使用Fiddler的小技巧 一.Fiddler抓包中文乱码问题 解决方法: 1.打开windows注册表,找到  HKEY_CURRENT_USER\Software\Microsoft\Fiddler2 2.在右栏空白处点击右键新建,选字符串值,加上HeaderEncoding,然后值输入 GBK(建议设置为UTF-8) 温馨提示: HeaderEncod

  • mysql导入导出数据中文乱码解决方法小结

    linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如下面的代码: 复制代码 代码如下: mysqldump -uroot -p --default-character-set=utf8 dbname tablename > bak.sql 那么导入数据的时候也要使用-

随机推荐