• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python解压文件格式的基本方法

python 搞代码 4年前 (2022-01-09) 14次浏览 已收录 0个评论

应对多种压缩包格式的python库:patool。如果平时只用基本的解压、打包等操作,也不想详细了解各种压缩格式对应的python库,patool应该是个不错的选择。

相关推荐:《python视频》

patool库支持的格式包括:

7z (.7z, .cb7), ACE (.ace, .cba), ADF (.adf), ALZIP (.alz), APE (.ape), AR (.a), ARC (.arc), ARJ (.arj), BZIP2 (.bz2), CAB (.cab), COMPRESS (.Z), CPIO (.cpio), DEB (.deb), DMS (.dms), FLAC (.flac), GZIP (.gz), ISO (.iso), LRZIP (.lrz), LZH (.lha, .lzh), LZIP (.lz), LZMA (.lzma), LZOP (.lzo), RPM (.rpm), RAR (.rar, .cbr), RZIP (.rz), SHN (.shn), TAR (.tar, .cbt), XZ (.xz), ZIP (.zip, .jar, .cbz) and ZOO (.zoo)

patool的基本使用方法:

import patoo<div>本文来源gaodai^.ma#com搞#代!码网</div>lib# 解压缩patoolib.extract_archive("archive.zip", outdir="/tmp")# 测试压缩包是否完整patoolib.test_archive("dist.tar.gz", verbosity=1)# 列出压缩包内的文件patoolib.list_archive("package.deb")# 创建压缩包patoolib.create_archive("/path/to/myfiles.zip", ("file1.txt", "dir/"))# 比较压缩包内文件的差异patoolib.diff_archives("release1.0.tar.gz", "release2.0.zip")# 搜索patoolib.search_archive("def urlopen", "python3.3.tar.gz")# 修改压缩包的压缩格式patoolib.repack_archive("linux-2.6.33.tar.gz", "linux-2.6.33.tar.bz2")

但是,patool的正常运行依赖于其他解压软件,例如,我平时用patool来解压文件时它主要调用了我电脑的7z、Rtools两个程序,如果电脑上没有能够处理相应压缩文件的软件,则会报错:

patoolib.util.PatoolError: could not find an executable program to extract format rar; candidates are (rar,unrar,7z)

另外,patool无法处理具有密码保护的压缩文件。
与patool类似的库还有pyunpack、easy-extract:pyunpack库依赖zipfile和patool,支持两库所支持的所有压缩格式,需提前安装;easy-extract库依赖解压软件unrar、7z、par2,需提前安装,同样支持多种解压格式。

常见压缩格式的处理

如果电脑上并未安装相应的压缩软件,只想使用python进行压缩解压操作,可以使用其他的下面来具体介绍几种常见的

zip格式

可以处理zip格式的python库包括python标准库zipfile,以及第三方库python-archive等,下面主要介绍一下zipfile库的基本使用方法:
首先创建ZipFile对象:

# 导入ZipFile类from zipfile import ZipFile# ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None)# 默认模式是读取,该模式提供read(), readline(), readlines(), __iter__(), __next__()等方法

解压缩文件包,解压函数共有两个:extract()、extractall(),前者可解压单个文件,默认解压至当前目录,后者可批量解压多个文件,默认解压所有文件。extract()、extractall()均有参数pwd,可处理具有密码的压缩包。

with ZipFile('test.zip') as myzip:    myzip.extract(member='1.txt',path='tmp')    myzip.extractall(path='tmp',members=['1.txt','2.txt'],pwd='password')

制作压缩文件:zipfile共有四种压缩文件的方法分别为:zipfile.ZIP_STORED(默认)、zipfile.ZIP_DEFLATED、zipfile.ZIP_BZIP2、zipfile.ZIP_LZMA

# 添加文件的mode有'w', 'a', 'x'# 'w'表示覆盖或写入一个新文件;'a'表示在已有文件后追加;'x'表示新建文件并写入。# 在三种mode下,如果未写入认识数据,则会生成空的ZIP文件。with ZipFile('test.zip',mode='w') as myzip:        for file in ['1.txt', '2.txt']: # 需压缩的文件列表                myzip.write(file,compress_type=zipfile.ZIP_DEFLATED)

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python解压文件格式的基本方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址