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. RocketMQ 消息存储

    消息存储 主要的存储文件: 1.消息文件(commitLog) 2.消息消费队列文件(consumeQueue) 3.Hash索引文件(IndexFile) 4.检测点文件(checkpoint) 5 ...

  2. Vue之组件使用(二)

    补充一下:之前没提到,这里是一个父子组件通信的方法 如果想要使同一个组件实现不同的效果,那么可以这样做. 把需要封装的组件模板写在template中 <template id="cou ...

  3. 在IDEA里创建web项目,以及web 项目部署

    在IDEA里创建web项目很简单: 1).先创建一个简单的maven项目,这个步骤我就不说了. 2).maven项目创建完后,因为我们需要的是web项目,因此我们要在pom.xml文件里设置packa ...

  4. Codeforces731C(SummerTrainingDay06-M 并查集)

    C. Socks time limit per test:2 seconds memory limit per test:256 megabytes input:standard input outp ...

  5. multipartUpload上传图片到阿里云

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. python 类之间的关系

    类与类之间的关系 在我们的世界中事物和事物之间总会有一些联系. 在面向对象中. 类和类之间也可以产生相关的关系 1. 依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻 ...

  7. linux下使用sublime-text写coffee遇到的编译问题

    Traceback (most recent call last): File "/opt/sublime_text/sublime_plugin.py", line 556, i ...

  8. chrome中workspace配置达到同步修改本地文件的作用

    在前端开发中,我们经常需要在浏览器中进行调试,特别是一些样式的修改,如果你还是先在浏览器elements中调试好在复制到本地文件,那就真的out了. chrome浏览器的workspace功能完全可以 ...

  9. ecsop文件结构

    Ecshop文件结构 :ecshop二次开发手册,ECSHOP文件结构,ECSHOP目录详解 /*ECShop 最新程序 的结构图及各文件相应功能介绍ECShop文件结构目录┣ activity.ph ...

  10. 学习dbms_parallel_execute包

    一.简介 ORACLE11g R2版本的新特性之一就是引进了DBMS_PARALLEL_EXECUTE包,使用DBMS_PARALLEL_EXECUTE包批量并行递增式的更新表. 更多ORACLE11 ...