原文链接:http://www.juzicode.com/python-tutorial-zip-unzip-tarfile
gzip和lzma等模块只支持单个文件的压缩,如果要处理多个文件时,则需要先用tarfile将多个文件打包,再用gzip或lzma进行压缩,当然tarfile模块不仅支持文件的打包,也提供了接口支持直接对文件进行压缩。注意这里“打包”和“压缩”是2个不同的概念。
1、tarfile.is_tarfile()判断是否受支持格式
is_tarfile()可以用来判断文件是否是tarfile支持的文件格式:
#juzicode.com / VX:桔子code
import tarfile
print('files.zip :',tarfile.is_tarfile('files.zip'))
print('logo.png.gz :',tarfile.is_tarfile('logo.png.gz'))
print('zipspec.txt.xz :',tarfile.is_tarfile('zipspec.txt.xz'))
print('zipspec2.txt.lzma:',tarfile.is_tarfile('zipspec2.txt.lzma'))
print('zipspec.txt :',tarfile.is_tarfile('zipspec.txt'))
print('logo.tar :',tarfile.is_tarfile('logo.tar'))
print('logo.tar.gz :',tarfile.is_tarfile('logo.tar.gz'))
print('logo.tar.bz2 :',tarfile.is_tarfile('logo.tar.bz2'))
print('logo.tar.xz :',tarfile.is_tarfile('logo.tar.xz'))
运行结果:
files.zip : False
logo.png.gz : False
zipspec.txt.xz : False
zipspec2.txt.lzma: False
zipspec.txt : False
logo.tar : True
logo.tar.gz : True
logo.tar.bz2 : True
logo.tar.xz : True
注:从这个例子可以看到同样后缀的文件,可能受tarfile支持,也可能不受tarfile支持,所以最好用is_tarfile()检查判断是否支持后再使用tarfile操作文件。在这个例子中 logo.png.gz, zipspec.txt.xz , zipspec2.txt.lzma的这几个文件是使用gzip(Python进阶教程m17b–压缩解压–gzip)和lzma(Python进阶教程m17c–压缩解压–lzma)直接压缩生成的文档,可以看到这种方式生成的压缩文档并不被tarfile支持。

本文介绍了如何使用Python的tarfile模块进行文件打包、压缩和解压,包括判断文件类型、创建文件实例、提取文件信息以及生成压缩文件。重点讲解了tarfile.is_tarfile()、tarfile.open()、提取操作和文件打包的不同模式。
最低0.47元/天 解锁文章
8456

被折叠的 条评论
为什么被折叠?



