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 对象。 有关 TarFile 对象以及所允许的关键字参数的详细信息请参阅 TarFile 对象。

mode 必须是 ‘filemode[:compression]’ 形式的字符串,其默认值为 ‘r’。 以下是模式组合的完整列表:
在这里插入图片描述
请注意 ‘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) 来指定文件的压缩等级。

对于 ‘w:xz’ 和 ‘x:xz’ 模式,tarfile.open() 接受关键字参数 preset 来指定文件的压缩等级。

针对特殊的目的,还存在第二种 mode 格式: ‘filemode|[compression]’。 tarfile.open() 将返回一个将其数据作为数据块流来处理的 TarFile 对象。 对此文件将不能执行随机查找。 如果给定了 fileobj,它可以是任何具有 read() 或 write() 方法 (由 mode 确定) 的对象。 bufsize 指定块大小,默认值为 20 * 512 字节。 可与此格式组合使用的有 sys.stdin, 套接字 file object 或磁带设备等。 但是,对于这样的 TarFile 对象存在不允许随机访问的限制,参见 例子。 目前可用的模式如下:
在这里插入图片描述
在 3.5 版更改: 添加了 ‘x’ (单独创建) 模式。

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

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

tarfile.is_tarfile(name)
如果 name 是一个 tarfile 能读取的 tar 归档文件则返回 True。 name 可以为 str,文件或文件类对象。

在 3.9 版更改: 支持文件或类文件对象。

tarfile 模块定义了以下异常:

exception tarfile.TarError
所有 tarfile 异常的基类。

exception tarfile.ReadError
当一个不能被 tarfile 模块处理或者因某种原因而无效的 tar 归档被打开时将被引发。

exception tarfile.CompressionError
当一个压缩方法不受支持或者当数据无法被正确解码时将被引发。

exception tarfile.StreamError
当达到流式 TarFile 对象的典型限制时将被引发。

exception tarfile.ExtractError
当使用 TarFile.extract() 时针对 non-fatal 所引发的异常,但是仅限 TarFile.errorlevel== 2。

exception tarfile.HeaderError
如果获取的缓冲区无效则会由 TarInfo.frombuf() 引发的异常。

以下常量在模块层级上可用:

tarfile.ENCODING
默认的字符编码格式:在 Windows 上为 ‘utf-8’,其他系统上则为 sys.getfilesystemencoding() 所返回的值。

以下常量各自定义了一个 tarfile 模块能够创建的 tar 归档格式。 相关细节请参阅 受支持的 tar 格式 小节。

tarfile.USTAR_FORMAT
POSIX.1-1988 (ustar) 格式。

tarfile.GNU_FORMAT
GNU tar 格式。

tarfile.PAX_FORMAT
POSIX.1-2001 (pax) 格式。

tarfile.DEFAULT_FORMAT
用于创建归

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FuncPlotCalc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值