Python tarfile库:TAR归档文件处理完全指南
tarfile 是 Python 标准库中用于处理 TAR 归档文件的模块,支持创建、读取、写入和提取 TAR 文件,同时兼容多种压缩格式(如 gzip、bzip2、xz 等)。TAR 格式常用于 Unix/Linux 系统中的文件归档,常与压缩算法结合使用(如 .tar.gz、.tar.bz2),适合批量处理多个文件或目录。
一、核心概念与基础
1. 主要类与作用
tarfile.TarFile:核心类,用于创建和操作 TAR 文件(打开、读取、写入、关闭等)。tarfile.TarInfo:存储 TAR 归档中单个文件的元信息(文件名、大小、权限、修改时间等)。
2. 常用模式(打开方式)
TarFile.open() 方法需指定模式,格式为 mode[:compression],其中:
- 基础模式:
'r'(读)、'w'(写)、'a'(追加)。 - 压缩格式(可选):
'gz':gzip 压缩(需 zlib 支持)'bz2':bzip2 压缩(需 bz2 支持)'xz':xz 压缩(需 lzma 支持)- 不指定:无压缩(纯 TAR 归档)
常用模式示例:
'r':读取未压缩的 TAR 文件'r:gz':读取 gzip 压缩的 TAR 文件(.tar.gz或.tgz)'w:bz2':创建 bzip2 压缩的 TAR 文件(.tar.bz2)'a':向未压缩的 TAR 文件追加内容(注意:压缩的 TAR 文件不支持追加)
二、基本操作示例
1. 读取 TAR 文件内容
查看 TAR 归档中的文件列表及元信息。
import tarfile
# 打开一个gzip压缩的TAR文件(只读模式)
with tarfile.open('archive.tar.gz', 'r:gz') as tf:
# 1. 获取所有文件/目录的名称列表
print("TAR中的所有条目:")
for name in tf.getnames():
print(f"- {
name}")
# 2. 获取单个文件的详细信息(TarInfo对象)
if tf.getnames():
first_entry = tf.getnames()[0]
info = tf.getmember(first_entry)
print(f"\n{
first_entry} 的详细信息:")
print(f" 名称:{
info.name}")
print(f" 大小:{
info.size} 字节")
print(f" 修改时间:{
info.mtime}") # 时间戳
print(f" 类型:{
info.type}") # 'b'=块设备, 'd'=目录, 'f'=普通文件等
print(f" 权限:{
oct(info.mode)}") # 八进制权限
2. 解压 TAR 文件
提取 TAR 归档中的全部或部分文件到指定目录。
import tarfile
import o

最低0.47元/天 解锁文章
4815

被折叠的 条评论
为什么被折叠?



