`

python tarfile-打包解包

 
阅读更多

 

最近项目上有一个ftp上传程序,需要把碎文件打包上传,到服务端再解包。本来已经只能通过shell来搞这个了,无奈打包过程中有一部分业务逻辑,不能把整个目录都打包,惊喜地发现python有tarfile这个东西,太惊喜了,试用完后发现还挺不错,打包一组466M的文件,共778个文件花了1.9s,解包花了2.3s。打包,解包代码如下:
tar打包
在写打包代码的过程中,使用tar.add()增加文件时,会把文件本身的路径也加进去,加上arcname就能根据自己的命名规则将文件加入tar包
打包代码:
#!/usr/bin/env /usr/local/bin/python
 # encoding: utf-8
 import tarfile
 import os
 import time

 start = time.time()
 tar=tarfile.open('/path/to/your.tar,'w')
 for root,dir,files in os.walk('/path/to/dir/'):
         for file in files:
                 fullpath=os.path.join(root,file)
                 tar.add(fullpath,arcname=file)
 tar.close()
 print time.time()-start
 
 
在打包的过程中可以设置压缩规则,如想要以gz压缩的格式打包
tar=tarfile.open('/path/to/your.tar.gz','w:gz')
其他格式如下表:
tarfile.open的mode有很多种:
mode action
'r' or 'r:*' Open for reading with transparent compression (recommended).
'r:' Open for reading exclusively without compression.
'r:gz' Open for reading with gzip compression.
'r:bz2' Open for reading with bzip2 compression.
'a' or 'a:' Open for appending with no compression. The file is created if it does not exist.
'w' or 'w:' Open for uncompressed writing.
'w:gz' Open for gzip compressed writing.
'w:bz2' Open for bzip2 compressed writing.
 
tar解包
tar解包也可以根据不同压缩格式来解压。
#!/usr/bin/env /usr/local/bin/python
 # encoding: utf-8
 import tarfile
 import time

 start = time.time()
 t = tarfile.open("/path/to/your.tar", "r:")
 t.extractall(path = '/path/to/extractdir/')
 t.close()
 print time.time()-start
 
 
上面的代码是解压所有的,也可以挨个起做不同的处理,但要如果tar包内文件过多,小心内存哦~
tar = tarfile.open(filename, 'r:gz')
for tar_info in tar:
    file = tar.extractfile(tar_info)
    do_something_with(file)
 

 

分享到:
评论

相关推荐

    python tarfile模块.docx

    TarFile类对于就是tar压缩包实例. 其由member块组成, member块则包括header块和data块. 每个member以TarInfo对象形式描述. 所以TarFile就是TarInfo的序列. 其初始化函数的形参和TarFile类的属性对应, 其中比较重要...

    Python中使用tarfile压缩、解压tar归档文件示例

    主要介绍了Python中使用tarfile压缩、解压tar归档文件示例,本文直接给出解压和压缩代码示例,需要的朋友可以参考下

    Python压缩和解压缩文件

    使用python自带的zipfile和tarfile模块做压缩文件夹/解压缩zip文件功能

    python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法

    默认情况下,tarfile 打包成的 tar.gz 文件会带绝对路径,而很多情况下,我们需要的是相对打包文件夹的路径。 代码: <pre name=code class=python><span xss=removed>import tarfile tmp_tar_dir = /home file_name...

    python3.6.5参考手册 chm

    Python参考手册,官方正式版参考手册,chm版。以下摘取部分内容:Navigation index modules | next | Python » 3.6.5 Documentation » Python Documentation contents What’s New in Python What’s New In ...

    python打包压缩、读取指定目录下的指定类型文件

    下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch def find_spe_file(root, patterns=['*'], non_cludedir=[]&#...

    CentOS下tar打包解压详解(解压到指定文件夹)

    本文介绍了tar命令、gzip, zcat 命令、bzip2, bzcat 命令、compress 命令、dd...-t :查看tarfile 里面的文件! 特别注意,在参数的下达中,c/x/t 仅能存在一个!不可同时存在! 因为不可能同时压缩与解压缩。 -z :

    Python 含中文分词的多项式贝叶斯的增量学习的文本分类.rar

    本源码中包括两个Python案例:1、基于潜在狄利克雷分配(LDA)模型的内容主题挖掘。2、基于多项式贝叶斯的增量学习的文本分类。依赖库:sys、re、tarfile、os、numpy、bs4、sklearn  程序输入:article.txt、news_...

    python中将zip压缩包转为gz.tar的方法

    而工作中这个又时常需要将zip文件转换为gz.tar格式,所以常常将压缩为zip格式的文件发给我来重新压缩成gz.tar格式发给他,能偷懒就不想动手,就用python的tarfile和zipfile包完成了一个将zip转换成gz.tar格式的小脚...

    Python使用wget实现下载网络文件功能示例

    本文实例讲述了Python使用wget实现下载网络文件功能。分享给大家供大家参考,具体如下: wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。 ubuntu 安装wget pip install...

    tarfile模块

    tarfile.open() Signature: tarfile.open(name=None, mode=‘r’, fileobj=None, bufsize=10240, **kwargs) 打开tar存档进行读、写或追加 返回一个合适的TarFile类 import os import tarfile import urllib import ...

    压缩tar包工具

    Usage: jtar [ -f TarFile ] [-x ExcludeFile] [ -c Directory ] -z

    Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法

    主要介绍了Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法,涉及Python3使用tarfile模块实现tar压缩文件的技巧,需要的朋友可以参考下

    python模块

    shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的,详细zipfile压缩解压tarfile压缩解压备注:1、shutil.copymode(src,dst)的源代码用于序列化的两个模块json,用于字符串和python数据类型间进行转换...

    Python在后台自动解压各种压缩文件的实现方法

    编写一个 Python 程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点: os 模块综合应用 glob 模块综合应用 利用 gzip zipfile rarfile tarfile 模块...

    python 实现tar文件压缩解压的实例详解

    python 实现tar文件压缩解压的实例详解 压缩文件: import tarfile import os def tar(fname): t = tarfile.open(fname + .tar.gz, w:gz) for root, dir, files in os.walk(fname): print root, dir, files ...

    Python解压.tar.gz文件

    需要的库:tarfile 可以使用pip install tarfile下载。 显示.tar.gz文件夹中的文件: import tarfile filename = 文件1.gz tf = tarfile.open(filename) print(tf.getnames()) 运行即可解压压缩包到D:/Learn/目的...

    Python实现简单的文件传输与MySQL备份的脚本分享

    主要介绍了Python实现简单的文件传输与MySQL备份的脚本分享,用到了socket与tarfile模块,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics