这是我参与8月更文挑战的第8天,活动详情查看: 8月更文挑战
回顾复习
我们经过前面对支持归档压缩和解压相关模块如下:
-
Python文件目录高级操作-shutil模块,其除了对文件/目录进行拷贝、移动、删除操作,还支持对文件进行归档、压缩和解压缩的方法。
-
zipfile模块,提供ZipFile类及对应方法,创建ZiP文件
本期,我们将继续学习对文件目录压缩和解压操作-tarfile模块相关方法学习和使用
废话不多说,带上耳机🎧、播放音乐🎼,开始今天的学习之旅💃💃💃~
1. tarfile模块常用方法
tarfile模块也支持压缩解压操作,当进行压缩时,如果压缩文件夹,会将其中的内容也进行压缩
同时tarfile也提供了读写功能,常用的方法如下:
| 方法 | 作用 |
|---|---|
| tarfile.TarFile | 提供了操作一个tar归档的接口 |
| tarfile.TarInfo | 一个TarInfo对象代表TarFile中的一个成员 |
| tarfile.open(filename,mode) | 创建并返回一个TarFile对象 |
| tarfile.is_tarfile(name) | 判断文件是否是Tarfile,是则返回True |
| tarfile.ENCODING | 默认字符编码,Windows上为"utf-8" |
| tarfile.USTAR_FORMAT | POSIX.1-1922(ustar)格式 |
| tarfile.GUN_FORMAT | GUN tar格式 |
| tarfile.PAX_FORMAT | POSIX.1-2001(pax)格式 |
📣 重要说明:
-
tarfile.open(filename,mode):创建打开Tarfile对象
(1)创建Tarfile对象filename的后置与mode值对应
(2)mode默认为"r",只读模式
(3)文件格式与mode对照表如下:
-
tarfile.TarFile: 提供了操作一个tar归档的接口
(1)TarFile实例对象可以与上文管理器一起使用
(2)Tarfile对象发生异常事件时被打开用于写入的压缩文件将不会被终结。只会关闭
(3)Tarfile类提供操作压缩文件的方法如add(),close(),getnames()等方法
方法 作用 add(name) 将文件添加到压缩文件里 addfile(tarinfo) 将tarinfo添加到压缩文件里 getmeber(name) 获取压缩文件的name的对象 getmebers() 获取压缩文件里所有的文件对象 getnames() 获取压缩文件里名称列表的文件 list() 将压缩文件里内容打印给系统 next() 返回压缩文档下一个文件对象 extract(nanem,path) 解压单个文件 extractall(path) 解压所有文件 close() 关闭压缩文件 -
tarfile.TarInfo: 一个TarInfo对象代表TarFile中的一个成员
(1)TarInfo对象通过Tarfile的getmember()、getmembers()和gettarinfo()方法获取
(2)TarInfo保存文件的所有属性(如:文件类型、文件大小、修改时间、权限),还提供判断其文件类型的方法。
方法/属性名 作用 name 压缩文件成员名称 linkname 压缩文件成员名称 gname 组名 size 文件大小 mode 文件权限 isfile() 判断TarInfo对象是否是一个普通文件 isdir() 判断TarInfo对象是否是一个目录 ischr() 判断TarInfo对象是否是一个字节设备 isfifo() 判断TarInfo对象是否是一个FIFO管道
2. tarfile模块压缩和解压操作
压缩文件目录结构
test.tar,gz
│ test1.txt
│
├─New
│ New10_test.txt
│
├─old
│ old6_test
│ test.txt
📚压缩实现步骤:
-
创建压缩文件:tp = tarfile.open(file_path, mode)
-
添加内容:tp.add(file_name, arcname)
-
关闭文件:tp.close()
import tarfile
tf = tarfile.open("test.tar.gz","w:gz")
tf.add('test1.txt')
tf.add('./New/New10_test.txt')
tf.add('./old/old6_test/test.txt')
tf.list()
tf.close()
3. tarfile模块解压操作
📗📘📙解压:
-
创建tarfile实例,打开tar文件:tp = tarfile.open(file_path, 'r')
-
解压文件操作:
(1)解压指定单个文件:tp.extract(file_name, path)
(2)解压tar中全部文件:tp.extractall(path) -
关闭文件:tp.close()
tf = tarfile.open("test.tar.gz","r:gz")
tf.extract("test1.txt","./tar2")
tf.extractall("./tar2")
tf.close()
总结
本期,我们对Python提供对文件进行压缩和解压操作的tarfile模块相关方法如open(),add()等
同时,针对tarfile模块提供的类及方法,进行学习和掌握,在我们日常工作中助力提高效率
以上是本期内容,欢迎各位大佬点赞评论,下次见~