Python tarfile模块

1,082 阅读3分钟

玩转Python

这是我参与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_FORMATPOSIX.1-1922(ustar)格式
tarfile.GUN_FORMATGUN tar格式
tarfile.PAX_FORMATPOSIX.1-2001(pax)格式

📣 重要说明:

  • tarfile.open(filename,mode):创建打开Tarfile对象

    (1)创建Tarfile对象filename的后置与mode值对应

    (2)mode默认为"r",只读模式

    (3)文件格式与mode对照表如下:

    格式与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

📚压缩实现步骤:

  1. 创建压缩文件:tp = tarfile.open(file_path, mode)

  2. 添加内容:tp.add(file_name, arcname) 

  3. 关闭文件: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模块解压操作

📗📘📙解压:

  1. 创建tarfile实例,打开tar文件:tp = tarfile.open(file_path, 'r')

  2. 解压文件操作:

    (1)解压指定单个文件:tp.extract(file_name, path)
    (2)解压tar中全部文件:tp.extractall(path)

  3. 关闭文件: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模块提供的类及方法,进行学习和掌握,在我们日常工作中助力提高效率

以上是本期内容,欢迎各位大佬点赞评论,下次见~