tarfile读文件python_python编程 tarfile --- 读写tar归档文件

tarfile 模块可以用来读写 tar 归档,包括使用 gzip, bz2 和 lzma 压缩的归档。 请使用 zipfile 模块来读写 .zip 文件,或者使用 shutil 的高层级函数。

一些事实和数字:

读写 gzip, bz2 和 lzma 解压的归档要求相应的模块可用。

支持读取 / 写入 POSIX.1-1988 (ustar) 格式。

对 GNU tar 格式的读/写支持,包括 longname 和 longlink 扩展,对所有种类 sparse 扩展的只读支持,包括 sparse 文件的恢复。

对 POSIX.1-2001 (pax) 格式的读/写支持。

处理目录、正常文件、硬链接、符号链接、fifo 管道、字符设备和块设备,并且能够获取和恢复文件信息例如时间戳、访问权限和所有者等。

在 3.3 版更改: 添加了对 lzma 压缩的支持。

tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)

针对路径名 name 返回 TarFile 对象。

mode 必须是 'filemode[:compression]' 形式的字符串,其默认值为 'r'。 以下是模式组合的完整列表:

模式

action

'r' or 'r:*'

打开和读取使用透明压缩(推荐)。

'r:'

打开和读取不使用压缩。

'r:gz'

打开和读取使用gzip 压缩。

'r:bz2'

打开和读取使用bzip2 压缩。

'r:xz'

打开和读取使用lzma 压缩。

'x'或'x:'

创建tarfile不进行压缩。如果文件已经存在,则抛出 FileExistsError 异常。

'x:gz'

使用gzip压缩创建tarfile。如果文件已经存在,则抛出 FileExistsError 异常。

'x:bz2'

使用bzip2 压缩创建tarfile。如果文件已经存在,则抛出 FileExistsError 异常。

'x:xz'

使用lzma 压缩创建tarfile。如果文件已经存在,则抛出 FileExistsError 异常。

'a' or 'a:'

打开以便在没有压缩的情况下追加。如果文件不存在,则创建该文件。

'w' or 'w:'

打开用于未压缩的写入。

'w:gz'

打开用于 gzip 压缩的写入。

'w:bz2'

打开用于 bzip2 压缩的写入。

'w:xz'

打开用于 lzma 压缩的写入。

请注意 'a:gz', 'a:bz2' 或 'a:xz' 是不可能的组合。 如果 mode 不适用于打开特定(压缩的)文件用于读取,则会引发 ReadError。 请使用 mode 'r' 来避免这种情况。 如果某种压缩方法不受支持,则会引发 CompressionError。

如果指定了 fileobj,它会被用作对应于 name 的以二进制模式打开的 file object 的替代。 它会被设定为处在位置 0。

对于 'w:gz', 'r:gz', 'w:bz2', 'r:bz2', 'x:gz', 'x:bz2' 等模式,tarfile.open() 接受关键字参数 compresslevel (默认值为 9) 来指定文件的压缩等级。

针对特殊的目的,还存在第二种 mode 格式: 'filemode|[compression]'。 tarfile.open() 将返回一个将其数据作为数据块流来处理的 TarFile 对象。 对此文件将不能执行随机查找。 如果给定了 fileobj,它可以是任何具有 read() 或 write() 方法 (由 mode 确定) 的对象。 bufsize 指定块大小,默认值为 20 * 512 字节。 可与此格式组合使用的有 sys.stdin, 套接字 file object 或磁带设备等。 但 目前可用的模式如下:

模式

动作

'r|*'

打开 tar 块的 流 以进行透明压缩读取。

'r|'

打开一个未压缩的 tar 块的 stream 用于读取。

'r|gz'

打开一个 gzip 压缩的 stream 用于读取。

'r|bz2'

打开一个 bzip2 压缩的 stream 用于读取。

'r|xz'

打开一个 lzma 压缩 stream 用于读取。

'w|'

打开一个未压缩的 stream 用于写入。

'w|gz'

打开一个 gzip 压缩的 stream 用于写入。

'w|bz2'

打开一个 bzip2 压缩的 stream 用于写入。

'w|xz'

打开一个 lzma 压缩的 stream 用于写入。

在 3.5 版更改: 添加了 'x' (单独创建) 模式。

在 3.6 版更改: name 形参接受一个 path-like object。

class tarfile.TarFile

用于读取和写入 tar 归档的类。 请不要直接使用这个类:而要使用 tarfile.open()。

tarfile.is_tarfile(name)

如果 name 是一个 tarfile 模块能读取的 tar 归档文件则返回 True。

tarfile 模块定义了以下异常:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值