最近项目上有一个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有很多种:
'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)
相关推荐
TarFile类对于就是tar压缩包实例. 其由member块组成, member块则包括header块和data块. 每个member以TarInfo对象形式描述. 所以TarFile就是TarInfo的序列. 其初始化函数的形参和TarFile类的属性对应, 其中比较重要...
主要介绍了Python中使用tarfile压缩、解压tar归档文件示例,本文直接给出解压和压缩代码示例,需要的朋友可以参考下
使用python自带的zipfile和tarfile模块做压缩文件夹/解压缩zip文件功能
默认情况下,tarfile 打包成的 tar.gz 文件会带绝对路径,而很多情况下,我们需要的是相对打包文件夹的路径。 代码: <pre name=code class=python><span xss=removed>import tarfile tmp_tar_dir = /home file_name...
Python参考手册,官方正式版参考手册,chm版。以下摘取部分内容:Navigation index modules | next | Python » 3.6.5 Documentation » Python Documentation contents What’s New in Python What’s New In ...
下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch def find_spe_file(root, patterns=['*'], non_cludedir=[]&#...
本文介绍了tar命令、gzip, zcat 命令、bzip2, bzcat 命令、compress 命令、dd...-t :查看tarfile 里面的文件! 特别注意,在参数的下达中,c/x/t 仅能存在一个!不可同时存在! 因为不可能同时压缩与解压缩。 -z :
本源码中包括两个Python案例:1、基于潜在狄利克雷分配(LDA)模型的内容主题挖掘。2、基于多项式贝叶斯的增量学习的文本分类。依赖库:sys、re、tarfile、os、numpy、bs4、sklearn 程序输入:article.txt、news_...
而工作中这个又时常需要将zip文件转换为gz.tar格式,所以常常将压缩为zip格式的文件发给我来重新压缩成gz.tar格式发给他,能偷懒就不想动手,就用python的tarfile和zipfile包完成了一个将zip转换成gz.tar格式的小脚...
本文实例讲述了Python使用wget实现下载网络文件功能。分享给大家供大家参考,具体如下: wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。 ubuntu 安装wget pip install...
tarfile.open() Signature: tarfile.open(name=None, mode=‘r’, fileobj=None, bufsize=10240, **kwargs) 打开tar存档进行读、写或追加 返回一个合适的TarFile类 import os import tarfile import urllib import ...
Usage: jtar [ -f TarFile ] [-x ExcludeFile] [ -c Directory ] -z
主要介绍了Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法,涉及Python3使用tarfile模块实现tar压缩文件的技巧,需要的朋友可以参考下
shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的,详细zipfile压缩解压tarfile压缩解压备注:1、shutil.copymode(src,dst)的源代码用于序列化的两个模块json,用于字符串和python数据类型间进行转换...
编写一个 Python 程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点: os 模块综合应用 glob 模块综合应用 利用 gzip zipfile rarfile tarfile 模块...
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 ...
需要的库:tarfile 可以使用pip install tarfile下载。 显示.tar.gz文件夹中的文件: import tarfile filename = 文件1.gz tf = tarfile.open(filename) print(tf.getnames()) 运行即可解压压缩包到D:/Learn/目的...
主要介绍了Python实现简单的文件传输与MySQL备份的脚本分享,用到了socket与tarfile模块,需要的朋友可以参考下