zoukankan      html  css  js  c++  java
  • Python2.7-tarfile

    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:包含转换键值的字典

    ---------------- 坚持每天学习一点点
  • 相关阅读:
    POSTMAN使用教程
    RocketMQ搭建-WEB集成RMQ-SE集成RMQ
    android studio 低版本升级高版本的问题
    SqlServer 2015修改表时出现“save changes is not permitted…”的解决方法
    MATLAB
    新的学习,加油!
    BAK文件怎么恢复到数据库中
    Go语言基础之包
    Go语言基础之文件操作
    python获取多线程的返回值
  • 原文地址:https://www.cnblogs.com/tccbj/p/8431197.html
Copyright © 2011-2022 走看看