python tarfile模块

简介: python tarfile模块

一、简介

tarfile 模块提供了创建、打开、读取和写入 tar 文件的函数和类。以下是该模块中常用的一些函数和类:

tarfile.open(name, mode='r', fileobj=None, **kwargs):打开一个 tar 文件,返回一个 TarFile 对象。

TarFile.add(name, arcname=None, recursive=True, filter=None):将一个文件或目录添加到 tar 文件中。

TarFile.extractall(path='.', members=None, *, numeric_owner=False):将 tar 文件中的所有文件和目录解压到指定的目录中。

TarFile.getmembers():返回 tar 文件中的所有成员(文件和目录)的信息列表。

TarFile.extract(member, path='', set_attrs=True, numeric_owner=False):将指定的成员(文件或目录)从 tar 文件中解压出来。

TarFile.close():关闭 tar 文件。

二、简单示例

1.仅压缩

# 创建压缩包
tf = tarfile.open("ceshi0930_0.tar","w",encoding="utf-8")
# 写入文件
"""add(路径,别名)"""
tf.add("/bin/chown","chown")
tf.add("/bin/cp","cp")
tf.add("/bin/dash","tmp/dash")
# 关闭文件
tf.close()

2.使用gz算法压缩

tf = tarfile.open("ceshi0930_1.tar.gz","w:gz",encoding="utf-8")
# 写入文件
"""add(路径,别名)"""
tf.add("/bin/chown","chown")
tf.add("/bin/cp","cp")
tf.add("/bin/dash","tmp/dash")
# 关闭文件
tf.close()

3.使用bz2算法压缩

tf = tarfile.open("ceshi0930_2.tar.bz2","w:bz2",encoding="utf-8")
# 写入文件
"""add(路径,别名)"""
tf.add("/bin/chown","chown")
tf.add("/bin/cp","cp")
tf.add("/bin/dash","tmp/dash")
# 关闭文件
tf.close()

4.解压文件

tf = tarfile.open("ceshi0930_1.tar.gz","r",encoding="utf-8")
""" extract(文件,路径) 解压单个文件"""
tf.extract("chown","ceshi0930_1")
""" extract(路径) 解压所有文件"""
tf.extractall("ceshi0930_1_2")
tf.close()

5.追加文件

"""对已经压缩过的包无法进行追加文件,只能是没有压缩过的包进行追加文件"""
tf = tarfile.open("ceshi0930_0.tar","a",encoding="utf-8")
tf.add("/bin/mkdir","mkdir")
tf.close()
# 使用with进行改造
with tarfile.open("ceshi0930_0.tar","a",encoding="utf-8") as tf:
tf.add("/bin/mkdir","mkdir234")

6.查看文件

with tarfile.open("ceshi0930_0.tar","r",encoding="utf-8") as tf:

   lst = tf.getnames()

   print(lst)

7.追加文件到压缩包中在压缩

import os,shutil
"""
1.把已经压缩的包进行解压
2.把要追加的内容放进去
3.过滤文件重新压缩
"""
# 记录压缩包所在的绝对路径
pathvar1 = os.path.abspath("ceshi0930_2.tar.bz2")
# 要解压到哪个文件夹中(绝对路径)
pathvar2 = os.path.join(  os.getcwd() , "ceshi0930_2"  )
print(pathvar1)# /mnt/hgfs/python32_gx/day16/ceshi0930_2.tar.bz2
print(pathvar2)# /mnt/hgfs/python32_gx/day16/ceshi0930_2
# 1.把已经压缩的包进行解压
with tarfile.open(pathvar1,"r",encoding="utf-8") as tf:
    tf.extractall(pathvar2)
# 2.把要追加的内容放进去
shutil.copy("/bin/echo" , pathvar2)
# 3.过滤文件重新压缩
# 查看文件夹当中有什么文件
lst = os.listdir(pathvar2)
print(lst) # ['chown', 'cp', 'echo', 'tmp']
with tarfile.open(pathvar1,"w:bz2",encoding="utf-8") as tf:
    for i in lst:
        if i != "chown":
            # 拼凑成完整的绝对路径
            abs_path = os.path.join(pathvar2,i)
            # 剩下的都要压缩
            """add(路径,别名)"""
            tf.add(abs_path,i)

 

相关文章
|
5天前
|
安全 Linux 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
25 2
|
5天前
|
Python
Datetime模块应用:Python计算上周周几对应的日期
Datetime模块应用:Python计算上周周几对应的日期
24 1
|
5天前
|
Python Windows 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
24 2
|
3天前
|
JSON Java Linux
python有用的模块
python有用的模块
|
5天前
|
安全 测试技术 数据库
Python编程--sys模块及OS模块简单用例
Python编程--sys模块及OS模块简单用例
10 1
|
5天前
|
JSON 数据格式 Python
Python编程:利用JSON模块编程验证用户
Python编程:利用JSON模块编程验证用户
12 1
|
5天前
|
网络安全 开发工具 iOS开发
macOS 系统安装Python-nmap模块
macOS 系统安装Python-nmap模块
16 2
|
5天前
|
数据处理 Python
Python编程-利用datetime模块生成当前年份之前指定的间隔所有年份的日期列表和csv文件
Python编程-利用datetime模块生成当前年份之前指定的间隔所有年份的日期列表和csv文件
11 1
|
5天前
|
数据处理 Python
Python内置时间模块:Datetime实例详解(一)
Python内置时间模块:Datetime实例详解(一)
16 1
|
4天前
|
人工智能 Python
超级好用的Python模块——glob模块
超级好用的Python模块——glob模块