tarfile模块,读写 tar 压缩文件,包括用 gzip 或是 bz2 压缩的文件(如tar.bz2、tar.gz),一般使用 TarFile 类完成操作

1、模块方法

tarfile.is_tarfile(name):判断 name 是否是一个能被模块读取的 tar 文件
tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs):返回一个 TarFile 对象,简便的打开文件方法

参数设置:
name:文件路径名
mode:打开文件方式,有 'filemode[:compression]' 和 'filemode|[compression]',后者用于处理流数据
'r' 或 'r:*' 或 'r|*':正常压缩打开读取
'r:' 或 'r|':不压缩打开读取
'r:gz' 或 'r|gz':gzip 压缩打开读取
'r:bz2' 或 'r|bz2':bzip2 压缩打开读取
'a' 或 'a:':不压缩追加打开
'w' 或 'w:' 或 'w|':不压缩打开写
'w:gz' 或 'w|gz':gzip 压缩打开写
'w:bz2' 或 'w|bz2':bzip2 压缩打开写
fileobj:如果指定了,就作为 name 的文件对象

2、模块常数

tarfile.USTAR_FORMAT、tarfile.GNU_FORMAT、tarfile.PAX_FORMAT、tarfile.DEFAULT_FORMAT:都是内置的压缩格式
3、模块对象
3.1 TarFile 对象
3.1.1 初始化构建类:TarFile(name=None, mode='r', fileobj=None, format=DEFAULT_FORMAT, tarinfo=TarInfo, dereference=False, ignore_zeros=False, encoding=ENCODING, errors=None, pax_headers=None, debug=0, errorlevel=0)

参数设置:
name:文件路径名,如果指定了 fileobj,可以省略
mode:打开文件方式,有 r 和 w、a,默认为 r
fileobj:如果指定了,就作为 name 的文件对象,会根据文件对象本身的打开方式覆盖 mode
format:压缩格式,必须是模块常数中的一个
tarinfo:可以用自定义的类替换默认的模块的 TarInfo 对象
dereference:False 情况下向压缩包内加入符号链接和硬链接,True 情况下把文件内容加入到压缩包内。此参数对不支持符号链接的系统无作用
ignore_zeros:False 情况下遇到空块就认为到文件尾,True 情况下跳过空块和无效块,获得尽可能多的数据,对于读取连续数据或损坏的压缩包有用
encoding、errors:控制字符串的转码,默认设置可以解决大多数问题
pax_headers:unicode 字符串转码的一个字典,可以帮助解决不能正确解码的问题
debug:0-3,0 没有 debug 信息,3 输出所有 debug 信息至 sys.stderr
errorlevel:0 忽略所有错误,1 抛出所有致命错误,2 抛出所有错误

3.1.2 类方法

TarFile.open(...):另一种构造方法,模块方法的 tarfile.open() 是这个方法的删减版

3.1.3 实例方法
getmember(name):返回一个 TarInfo 对象,包含压缩文件里名为 name 的信息
getmembers():返回一个列表,每个元素都是一个 TarInfo 对象,对应压缩文件里的每个文件
getnames():列表形式返回压缩文件里的每个文件名
list(verbose=True):把压缩包内容输出到 sys.stdout,verbose 为 False 时只打印名字,True 时输出同 ls -l
next():返回压缩包中下一个文件的 TarInfo 对象
extractall(path=".", members=None):解压所有文件至当前目录,path 指定解压至别的目录,member 指定只解压其中的哪些文件
extract(member, path=""):解压名为 member 的文件到当前目录,path 指定解压至别的目录
add(name, arcname=None, recursive=True, exclude=None, filter=None):把名为 name 的文件添加至压缩包中,arcname 指定在压缩包内名字,recursive 指定是否递归整个文件夹,exclude 必须是一个接收一个文件名为参数,返回布尔值的函数,返回值为真就把这个文件排除不添加,反之添加,filter 必须是一个接收一个 TarInfo 对象的函数,返回一个修改后的 TarInfo 对象
addfile(tarinfo, fileobj=None):把名为 tarinfo 的 TarInfo 对象加入到压缩包内
gettarinfo(name=None, arcname=None, fileobj=None):从 os.stat() 的结果或一个存在的文件创建一个 TarInfo 对象
close():关闭压缩文件,在写模式下会在尾部添加两个 0 块(two finishing zero blocks)

3.2 TarInfo 对象

3.2.1 初始化构建类:TarInfo(name=""),一般不直接构建,都由 getmember()、getmembers() 或 gettarinfo() 得到

3.2.2 实例方法

frombuf(buf):从字符串缓冲区 buf 创建一个 TarInfo 对象
fromtarfile(tarfile):读取压缩包 tarfile 的下一个文件,返回 TarInfo 对象
tobuf(format=DEFAULT_FORMAT, encoding=ENCODING, errors='strict'):从一个 TarInfo 对象创建一个字符串缓冲区,参数同 TarFile 类
isfile()、isreg()、isdir()、issym()、islnk()、ischr()、isblk()、isfifo()、isdev():判断实例文件属性

3.2.3 实例属性

name:文件名
size:文件字节大小
mtime:最后修改时间
mode:文件权限
type:文件类型
linkname:目标文件名
uid:存储此对象的用户 ID
gid:存储此对象的组 ID
uname:用户名
gname:组名
pax_headers:包含转换键值的字典

Python2.7-tarfile的更多相关文章

  1. Python之文件与目录操作及压缩模块(os、shutil、zipfile、tarfile)

    Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...

  2. CentOS升级Python2.7导致使用pip等命令安装模块失败

    报错如下: # pip Traceback (most recent call last): File , in <module> from pkg_resources import lo ...

  3. 回味Python2.7——笔记4

    一.Python 标准库概览 1.操作系统接口 os 模块提供了很多与操作系统交互的函数: >>> import os >>> os.getcwd() # Retu ...

  4. Python第二十天 shutil 模块 zipfile tarfile 模块

    Python第二十天  shutil 模块  zipfile   tarfile 模块 os文件的操作还应该包含移动 复制  打包 压缩 解压等操作,这些os模块都没有提供 shutil 模块shut ...

  5. 【转】Python之文件与目录操作(os、zipfile、tarfile、shutil)

    [转]Python之文件与目录操作(os.zipfile.tarfile.shutil) Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读 ...

  6. Python之文件与目录操作(os、zipfile、tarfile、shutil)

    Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...

  7. tarfile/zipfile/shutil

    当我们选择使用Python来进行Linux系统管理,那么就免不了会在Python代码中对压缩包进行处理,包括创建压缩包.解压.获取压缩包中的文件列表等 tarfile Python的tarfile标准 ...

  8. python 基础之第十天(闭包,装饰器,生成器,tarfile与hashlib模块使用)

    局部变量与全局变量 局部变量:在函数里面定义的,只有当函数活动时才生效 全局变量:不在函数里面的 In [1]: x=10 In [2]: def bar(): ...: x=20 ...: prin ...

  9. 让VIM支持Python2 by update-alternatives

    前言  Ubuntu 16+中$ sudo apt install vim所安装的vim只支持Python3,但很多插件如YCM和powerline均需要Python2,那就来场"生命贵在折 ...

  10. 烂泥:python2.7和python3.5源码安装

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前几天在centos6.6安装ansible时,一直提示python版本不对,导致不能安 ...

随机推荐

  1. 【12】外观模式(Facade Pattern)

    一.引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化.然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作“ ...

  2. Donsen法则

    “专才”对越来越少的事物了解得越来越多,直到最后他对不存在的事物无所不知: 然而,“通才”对越来越多的事物了解得越来越少,直到他对一切事物一无所知.

  3. Three.js开发指南---粒子和粒子系统(第七章)

    使用粒子可以很容易的创建很多细小的物体,例如雨滴雪花等 本章主要内容: 1 使用ParticleBasicMaterial(基础粒子材质)来创建和设计粒子 2 使用ParticleSystem来创建一 ...

  4. C++ 的那些坑 (Day 0)

    C++ 的那些坑 (Day 0) 永远的for循环 其实这里要说的并不是for循环本身还是其中的计数变量的类型的选择. std::string s = "abcd" for (st ...

  5. 背景平铺(兼容IE8)

    标准浏览器通过background-size属性设置;IE8以下通过滤镜实现. 代码如下: /* IE8 */ filter: progid:DXImageTransform.Microsoft.Al ...

  6. CentOS 7开启防火墙端口

    1.开启防火墙 systemctl start firewalld 2.添加 firewall-cmd --zone=public --add-port=80/tcp --permanent 3.重新 ...

  7. maven一模块字段调用另一个模块数据生成下拉框

    店铺运营数据录入表实现的下拉框实现 从片区管理中提取分区数据,在招商管理(MIS)模块中获取并以下拉框的形式展现 ctrl类: 1.首先在ctrl类注入需提取另一模块字段的serviceclient接 ...

  8. CSS 小结笔记之变形、过渡与动画

    1.过渡 transition  过渡属性用法: transition :ransition-property  transition-duration  transition-timing-func ...

  9. C#安全加密类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.S ...

  10. 工作中遇到的问题收集--.NET

    一.拒绝访问 temp 目录.用来运行 XmlSerializer 的标识“IIS APPPOOL\MZJYMIS”没有访问 temp 目录的足够权限.CodeDom 将使用进程正在使用的用户帐户进行 ...