📅  最后修改于: 2023-12-03 15:07:22.258000             🧑  作者: Mango
Python 的 tarfile 模块提供了对 tar 归档文件进行压缩和解压缩的支持。tarfile 模块不仅可以创建 tar 归档文件,还可以处理多种压缩格式,如 Gzip、Bzip2、以及 xz。
要创建一个新的 tar 归档文件,可以使用 tarfile.open() 方法并指定要创建的文件名和归档模式。以下代码展示了一个简单的示例:
import tarfile
with tarfile.open('archive.tar', 'w') as tar:
tar.add('file1.txt')
tar.add('file2.txt')
tar.add('dir1')
tar.add('dir2')
在这个示例中,tarfile.open() 方法打开了名为 'archive.tar' 的 tar 归档文件,并以写模式打开。然后,我们向 tar 归档中添加了两个文件和两个目录,使用了 tar.add() 方法。在完成添加所有内容之后,文件必须使用 tar.close() 方法关闭。
解压缩 tar 归档文件与创建归档文件非常相似。可以使用 tarfile.open() 方法打开归档文件并使用 extractall() 方法解压缩归档文件的内容。
import tarfile
with tarfile.open('archive.tar', 'r') as tar:
tar.extractall()
在此示例中,我们使用 tarfile.open() 方法打开归档文件,并指定模式为 'r' 即只读权限。然后,使用 extractall() 方法解压缩归档文件的所有内容,该方法将归档中的所有文件提取到当前工作目录中。
tar.add() 方法可用于向归档文件中添加文件和目录。该方法可以接受一个文件名或目录名,以及可选的 arcname 参数以指定在归档文件中保存的名称。以下代码展示了如何向归档文件中添加带有自定义名称的目录。
import tarfile
with tarfile.open('archive.tar', 'w') as tar:
tar.add('example_dir', arcname='my_new_name')
在此示例中,我们将名为 'example_dir' 的目录添加到归档文件中,并将其名称更改为 'my_new_name'。
tarfile 模块还支持对归档文件进行压缩。可以指定所需的压缩类型,例如 'gz' 或 'bz2'。以下代码展示了如何创建一个 gzip 压缩的 tar 归档文件。
import tarfile
with tarfile.open('archive.tar.gz', 'w:gz') as tar:
tar.add('file1.txt')
tar.add('file2.txt')
tar.add('dir1')
在此示例中,我们使用 'w:gz' 模式创建了一个新的 gzip 压缩的归档文件。然后像之前那样,我们向 tar 归档中添加了两个文件和两个目录。
要解压缩压缩的归档文件,只需像之前那样打开 tar 文件即可,但在该示例中需要与创建时不同的模式打开文件。以下示例展示了如何解压缩一个 gzip 压缩的 tar 归档文件。
import tarfile
with tarfile.open('archive.tar.gz', 'r:gz') as tar:
tar.extractall()
在此示例中,我们使用 'r:gz' 模式打开 gzip 压缩的归档文件。然后,使用 extractall() 方法将所有文件解压缩到当前工作目录中。
tarfile 模块为 Python 带来了强大的归档和压缩支持,可以处理各种文件格式。无论是通过添加文件或目录来创建 tar 归档文件,还是解压缩含有压缩文件的归档文件,都可以使用 tarfile 模块轻松实现。