文章目录

  • 导入包
  • Cannot find working tool问题
  • 中文乱码问题

导入包

由于Windows文件管理器可以打开zip格式的压缩包,所以希望将所有的rar压缩包转成zip格式。在python中,需要导入zipfilerarfile来处理这两种压缩文件。其中,rarfile需要额外安装。

其调用方式都是一致的

import rarfile
import zipfilezFile = zipfile.ZipFile("test.zip")
rFile = rarfile.RarFile("test.rar")
zFile.extractall()
rFile.extractall()

其中ZipFile的构造函数为

ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None, *, strict_timestamps=True)

各参数含义如下

  • file 文件路径或者文件对象
  • mode 文件打开模式,可以为r, w, a, x,表示读、写、追加、新建写入。
  • compression 压缩方案,可以是ZIP_STORED, ZIP_DEFLATED, ZIP_BZIP2ZIP_LZMA
  • allowZip64True时,若文件大于4GiB,zipfile将创建使用ZIP64扩展的ZIP文件;为False则引发异常。
  • compresslevel 为压缩等级,在ZIP_DEFLATED时可选整数0-9,在ZIP_BZIP2时可选整数1-9,其他压缩方案不可用。
  • strict_timestamps 设为False时允许压缩早于1980年以前活2108年之后的文件,但时间戳会设为1980-01-01或2107-12-31

有关ZipFIle的更详细的信息,可见Python处理zip压缩文件

RarFile的构造函数则十分简单

rarfile.RarFile(file[, mode='r'])

其中file即压缩文件,mode为打开模式,r表示读取,w表示写入。

Cannot find working tool问题

在实际操作过程中,RarFile遇到了"Cannot find working tool"问题,这是因为并没有安装rar的解压工具所致。之所以会有这么奇葩的问题,皆因rar并非开源协议,所以没法用代码复现其解压逻辑,而只能去找专门的解压exe

其解决方案也非常简单,只需安装所谓的working tool即可,下载并安装winrar后,将安装目录下的UnRAR.exe添加到工作目录。

中文乱码问题

在实际操作过程中,ZipFile遇到了中文乱码问题。

为了解决中文乱码问题,不妨看一下zipfile在读取文件名的时候都干了个啥。打开zipfile源代码,直接搜索decode,果然发现了很可疑的几行代码

if flags & 0x800:# UTF-8 file names extensionfilename = filename.decode('utf-8')
else:# Historical ZIP filename encodingfilename = filename.decode('cp437')

所以对于中文字符,读取文件之后可以通过cp437进行encode

>>> import zipfile
>>> z = zipfile.ZipFile("test.zip")
>>> for n in z.namelist():
...     n.encode("cp437").decode("GBK")
...
'鲁迅卷1.txt'
'鲁迅卷2.txt'
'鲁迅卷3.txt'
'鲁迅卷4.txt'
'鲁迅卷5.txt'
'鲁迅卷6.txt'
'鲁迅卷7.txt'
'鲁迅卷8.txt'

Python将rar格式转换为zip格式相关推荐

  1. php arff文件,python实现txt文件格式转换为arff格式

    本文实例为大家分享了python实现txt文件格式转换为arff格式的具体代码,供大家参考,具体内容如下 将文件读取出来的时候默认都是字符型的,所以有转换出来有点问题,但是还是可以用的. 文件要求第一 ...

  2. python json 转csv_利用python将json数据转换为csv格式的方法

    假设.json文件中存储的数据为: {"type": "Point", "link": "http://www.dianping. ...

  3. TF之VGG系列:利用预先编制好的脚本data_convert .py文件将图片格式转换为tfrecord 格式

    TF之VGG系列:利用预先编制好的脚本data_convert .py文件将图片格式转换为tfrecord 格式 目录 转换代码 转换后的结果 转换代码 python data_convert2tfr ...

  4. 将Dos文档格式转换为Unix格式

    将Dos文档格式转换为Unix格式有多种方法这边列举一些,希望可以给大家提供些帮助 两种文本文档本质上的不同是由于不同系统下默认创建文件的行尾符不同,Windows系统以'\r\n'换行结尾,Lini ...

  5. CT数据将.nii格式或.nii.gz格式转换为dcm格式

    1.先转换.nii格式或.nii.gz格式转换为dcm格式 import SimpleITK as sitkimage=sitk.ReadImage(r"D:\python\project\ ...

  6. elf格式转换为hex格式文件的两种方法

    这周工作终于不太忙了,可以写点笔记总结一下了. 之前的文章如何在Keil-MDK开发环境生成Bin格式文件,介绍了如何在Keil开发环境使用fromelf软件,将生成的axf文件转换为bin文件,这次 ...

  7. elf格式转换为hex格式文件的两种方法 1

    这周工作终于不太忙了,可以写点笔记总结一下了. 之前的文章如何在Keil-MDK开发环境生成Bin格式文件,介绍了如何在Keil开发环境使用fromelf软件,将生成的axf文件转换为bin文件,这次 ...

  8. R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式、为dataframe的每一列绘制密度图和直方图(堆叠)

    R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式.为dataframe的每一列绘制密度图和直方图(堆叠) 目录 R语言ggplot2可视化:应用pivot_lon ...

  9. linux java amr转mp3_本工具用于将微信语音 amr 格式转换为 mp3 格式以便在 html5 的 audio 标签中进行播放...

    音频转码工具 本工具主要用于将微信语音 amr 格式转换为 mp3 格式以便在 html5 的 audio 标签中进行播放. 支持 Linux/Windows/Mac 平台 因为是基于 JAVE 项目 ...

最新文章

  1. 敏捷开发每日报告--day5
  2. 适合小白的卷积神经网络图解
  3. AppWidget应用(一)---创建一个appWidget
  4. 区分:AndroidDriver, iOSDriver, AppiumDriver and Remote WebDriver
  5. java 获取所有带指定注解的类名_SXT DAY023 反射和注解
  6. 项目管理学习总结(14)——优秀技术Leader应该具备什么哪些方面的能力
  7. php查询mysql表的行数据类型,PHP 使用mysql_fetch_row 查询获得数据行列表的简单示例...
  8. 窗函数在图像处理中的应用
  9. 【紫书第七章】暴力美学(能用暴力解决的事情为什么要动脑子?)
  10. chrome浏览器导出扩展_每日新闻摘要:再次跟踪您的浏览历史记录的Google Chrome浏览器扩展...
  11. python多继承mro_Python的多继承问题-MRO和C3算法
  12. 利用ACC控制酷狗音乐
  13. 1KB文件夹快捷方式病毒清除方案
  14. word脚注的编辑设置
  15. 易语言调用c 文本乱码,解决易语言编程乱码的问题
  16. mysql(day03)
  17. vue element ui 利用xslx导出文档表格功能(纯前端导出下载文档)
  18. 中国丹参市场经营模式与盈利预测报告(新版)2021-2026年
  19. 有感而发20210216
  20. 淘宝买的AC+退款经历

热门文章

  1. 连连看逆向分析与外挂编写
  2. ajax学什么难,ajax分析与讲解,其实ajax一点也不难,只是你把它看难了
  3. 轻松查询多个德邦单号物流详情,并一键查看备注
  4. 压缩感知重构算法之迭代软阈值(IST)
  5. 中国七大高僧遗言:惊醒人心最深的执迷
  6. android平板电脑怎么才能连接电脑,怎么将安卓平板电脑装在车上 主板又是怎么连接上去的...
  7. 黑马安卓74期安全卫士day04 缺失部分
  8. 硕士论文查重检测哪些部分?
  9. ID3算法实现西瓜好坏和天气影响出行的算法
  10. 提高Google或者火狐浏览器下载速度的方法+解决百度网盘下载慢的方法