首页 > 编程语言 >python tarfile模块

python tarfile模块

时间:2023-10-21 11:23:09浏览次数:35  
标签:文件 tar python tarfile add 模块 tf ceshi0930

一、简介

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)

 

标签:文件,tar,python,tarfile,add,模块,tf,ceshi0930
From: https://www.cnblogs.com/panwenbin-logs/p/17778664.html

相关文章

  • Python打印动态进度条
    importtimedefmyprocess(percent):ifpercent>1:percent=1#打印对应的#号数量*"#"=>字符串#号效果strvar=int(percent*50)*"#"#\r将后面字符覆盖到行首进行打印%%=>%print("\r[%-50s]%d%%"%(s......
  • thinkPHP 项目只需要单个项目模块,比如去掉url中的admin
    thinkPHP项目只需要单个项目模块,比如去掉url中的admin这里以thinkPHP为例这里以thinkPHP为例1、找到入口文件的index.php,加入下面的define(‘BIND_MODULE’,‘admin’);<?php//定义应用目录define('APP_PATH',__DIR__.'/application/');//路由改写define('BIND_MODUL......
  • Python:Anaconda安装虚拟环境到指定路径
    anaconda 总是会把虚拟环境默认安装至C盘,但是C盘容量有限,所以目标将虚拟环境安装至其他盘。步骤如下:通过查阅anaconda的文档,发现是可以进行指定路径安装的。可以输入如下命令进行查看:condacreate--help安装虚拟环境到指定路径的命令如下:condacreate--prefix=F:\sofe......
  • Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测|附代码数据
    全文下载链接:http://tecdat.cn/?p=20678最近我们被客户要求撰写关于GARCH的研究报告,包括一些图形和统计输出。在本文中,预测股价已经受到了投资者,政府,企业和学者广泛的关注。然而,数据的非线性和非平稳性使得开发预测模型成为一项复杂而具有挑战性的任务在本文中,我将解释如何将 ......
  • Nginx安装lua模块
    前提已安装完成Nginx安装LuaJITwgethttp://luajit.org/download/LuaJIT-2.0.5.tar.gztar-zxvf LuaJIT-2.0.5.tar.gzcdLuaJIT-2.0.5makeinstallPREFIX=/usr/local/LuaJITecho"exportLUAJIT_LIB=/usr/local/LuaJIT/lib">>/etc/profileecho"expor......
  • umicv cv-summary1-全连接神经网络模块化实现
    全连接神经网络模块化实现Linear与Relu单层实现LossLayer实现多层神经网络不同梯度下降方法Dropout层今天这篇博文针对Assignment3的全连接网络作业,对前面学习的内容进行一些总结在前面的作业中我们建立神经网络的操作比较简单,也不具有模块化的特征,在A3作业中,引导我们......
  • python 案例
    这个程序使用了两个包:datetime和playsound。datetime:这是Python标准库中的一个模块,用于处理日期和时间。它提供了许多函数和类,可以让您在Python程序中处理日期和时间。由于datetime是Python的内置模块,因此您无需安装任何其他软件包来使用它。playsound:这是一个第三方包,用于......
  • Python 条件和 if 语句
    Python支持来自数学的通常逻辑条件:等于:a==b不等于:a!=b小于:a<b小于或等于:a<=b大于:a>b大于或等于:a>=b这些条件可以以多种方式使用,最常见的是在"if语句"和循环中使用。if语句是使用if关键字编写的。示例,if语句:a=33b=200ifb>a:print("bisgreate......
  • 力扣每日一题+python知识点回顾(三)
    力扣题目:根据规则将箱子分类(题号:2525)给你四个整数length,width,height和mass,分别表示一个箱子的三个维度和质量,请你返回一个表示箱子类别的字符串。如果满足以下条件,那么箱子是"Bulky"的:箱子至少有一个维度大于等于10^4。或者箱子的体积大于等于10^9。如果箱子的......
  • Python日期加减控制-datetime库
    理想汽车笔试时间好短,没控制好时间就结束了,日期初始化timetime()初始化时间输入年月日时分秒的int参数timedelta为操作的时间,可以只输入某个单位的时间fromdatetimeimportdatetime,timedeltadt=datetime()字符串格式化通过{}的方式"{1}{0}{1}".format("hello",......