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


Posted in Python onApril 05, 2015

Python自带的tarfile模块可以方便读取tar归档文件,牛b的是可以处理使用gzip和bz2压缩归档文件tar.gz和tar.bz2。
与tarfile对应的是zipfile模块,zipfile是处理zip压缩的。请注意:os.system(cmd)可以使Python脚本执行命令,当然包括:tar -czf  *.tar.gz *,tar -xzf *.tar.gz,unzip等,当我觉得这样尽管可以解决问题,但我觉得很业余。

使用tarfile压缩

import tarfile

 

#创建压缩包名

tar = tarfile.open("/tmp/tartest.tar.gz","w:gz")

#创建压缩包

for root,dir,files in os.walk("/tmp/tartest"):

    for file in files:

        fullpath = os.path.join(root,file)

        tar.add(fullpath)

tar.close()

使用tarfile解压
def extract(tar_path, target_path):

    try:

        tar = tarfile.open(tar_path, "r:gz")

        file_names = tar.getnames()

        for file_name in file_names:

            tar.extract(file_name, target_path)

        tar.close()

    except Exception, e:

        raise Exception, e

其中open的原型是:

tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)

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.

更多请参考:tarfile — Read and write tar archive files

Python 相关文章推荐
python实现的udp协议Server和Client代码实例
Jun 04 Python
python在控制台输出进度条的方法
Jun 20 Python
Django在win10下的安装并创建工程
Nov 20 Python
Python网络爬虫中的同步与异步示例详解
Feb 03 Python
详解如何为eclipse安装合适版本的python插件pydev
Nov 04 Python
在python中pandas的series合并方法
Nov 12 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
Python os模块常用方法和属性总结
Feb 20 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
Python3通过chmod修改目录或文件权限的方法示例
Jun 08 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
python中pyqtgraph知识点总结
Jan 26 Python
低版本中Python除法运算小技巧
Apr 05 #Python
Python中使用PDB库调试程序
Apr 05 #Python
使用PDB模式调试Python程序介绍
Apr 05 #Python
python使用calendar输出指定年份全年日历的方法
Apr 04 #Python
python获取指定网页上所有超链接的方法
Apr 04 #Python
python中字典dict常用操作方法实例总结
Apr 04 #Python
python随机生成指定长度密码的方法
Apr 04 #Python
You might like
构建简单的Webmail系统
2006/10/09 PHP
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
深入讲解Python编程中的字符串
2015/10/14 Python
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
校园之声广播稿
2014/01/31 职场文书
法语专业求职信
2014/07/20 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
爱心募捐感谢信
2015/01/22 职场文书
人生遥控器观后感
2015/06/11 职场文书
小学总务工作总结
2015/08/13 职场文书