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 调用HBase的简单实例
Dec 18 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
Jul 24 Python
python中PS 图像调整算法原理之亮度调整
Jun 28 Python
Python中的正则表达式与JSON数据交换格式
Jul 03 Python
Python3分析处理声音数据的例子
Aug 27 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
Python实现代码块儿折叠
Apr 15 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
Django用内置方法实现简单搜索功能的方法
Dec 18 Python
去除python中的字符串空格的简单方法
Dec 22 Python
Python 里最强的地图绘制神器
Mar 01 Python
Python进阶学习之带你探寻Python类的鼻祖-元类
May 08 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
虫族 Zerg 历史背景
2020/03/14 星际争霸
如何去掉文章里的 html 语法
2006/10/09 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
JavaScript登录验证基础教程
2017/11/01 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
vue代码分割的实现(codesplit)
2018/11/13 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
js实现随机点名程序
2020/09/17 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
利用python实现微信头像加红色数字功能
2018/03/26 Python
python支付宝支付示例详解
2019/08/22 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
python利用platform模块获取系统信息
2020/10/09 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
Python的两道面试题
2013/06/29 面试题
DELPHI面试题研发笔试试卷
2015/11/08 面试题
毕业生就业推荐信范文
2013/12/01 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
同学聚会策划方案
2014/06/06 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
放假通知
2015/04/14 职场文书
vue前端工程的搭建
2021/03/31 Vue.js