'tar' 实用程序最初是为 UNIX 操作系统引入的。其目的是将多个文件收集到一个通常称为 tarball 的存档文件中,这使得分发文件变得容易。Python 标准库的 tarfile 模块中的函数有助于创建 tar 存档并根据需要从 tar 包中提取。档案可以使用 gzip、bz2 和 lzma 压缩构建,也可以根本不进行任何压缩。
此模块中定义的 open() 函数用于写入 tar 文件或从中读取。
Open() 函数
此函数返回与文件名对应的 TarFile 对象,该对象作为参数提供给它。该函数需要另一个名为 mode 的参数,默认情况下为 'r' 表示不压缩。下面列出了其他模式 -
模式 | 描述 |
---|---|
'r' or 'r:*' |
打开以供读取,采用透明压缩。 |
'r:' |
打开读取,无需压缩。 |
'r:gz' |
使用 gzip 压缩打开以供读取。 |
'r:bz2' |
使用 bzip2 压缩打开以供读取。 |
'r:xz' |
使用 lzma 压缩打开以供读取。 |
'x' or 'x:' |
以独占方式创建不压缩的 tarfile。 |
'x:gz' |
使用 gzip 压缩创建 tarfile。 |
'x:bz2' |
使用 bzip2 压缩创建一个 tarfile。 |
'x:xz' |
使用 lzma 压缩创建 tarfile。 |
'a' or 'a:' |
打开以进行追加,无压缩。 |
'w' or 'w:' |
Open 用于未压缩写入。 |
'w:gz' |
打开 gzip 压缩写入。 |
'w:bz2' |
打开 bzip2 压缩写入。 |
'w:xz' |
为 lzma 压缩写入打开。 |
TarFile() 方法
此构造函数还需要 file name 和 mode 参数。mode 参数的可能值如上。
此类中的其他方法如下 -
add() 方法
此方法将文件添加到存档中。该方法需要一个名称,可以是文件名、目录、符号链接、快捷方式等。默认情况下,目录是递归添加的。要防止递归加法,请将 recursive 参数设置为 False。
addfile() 方法
该方法将 TarInfo 对象添加到存档中。
extractall() 方法
如果未明确提供任何其他路径,则此方法会将 archive 的所有成员提取到当前路径中。
extract() 方法
该方法将指定的成员提取到给定的路径中,默认为当前路径。
以下示例使用 gzip 算法打开一个 tar 文件进行压缩,并在其中添加一个文件。
假设 'zen.txt' 文件存在于当前工作目录中,它将被添加到 'zen.tar.gz' 文件中。
以下代码从 tar 存档中提取文件并提取所有文件(在本例中只有 on)并将它们放入当前文件夹。要验证结果,您可以删除或重命名当前文件夹中的 'zen.txt' 。
您会发现 'zen.txt' 文件将出现在当前目录中。
要创建包含当前目录中所有文件的 tar,请使用以下代码 -
命令行界面
可以通过命令行界面创建和提取 tar 文件。例如,通过在命令窗口中执行以下命令将 'lines.txt' 文件添加到 tar 文件中 −
可以使用以下命令行选项。
-l or --list |
列出 tarfile 中的文件。 |
-c or --create |
从源文件创建 tarfile。 |
-e or --extract |
如果未指定 tarfile,则将 tarfile 解压到当前目录中output_dir。 |
-t or --test |
测试 tarfile 是否有效。 |
-v or --verbose |
详细输出。 |
以下命令行将在当前目录下的 newdir 文件夹中提取line.tar。
以下命令行将列出 tar 存档中的所有文件。