Python tarfile库:TAR归档文件处理完全指南

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值