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通过scapy获取局域网所有主机mac地址示例
May 04 Python
详解Python中的各种函数的使用
May 24 Python
Python 多线程抓取图片效率对比
Feb 27 Python
Python去除、替换字符串空格的处理方法
Apr 01 Python
解决nohup重定向python输出到文件不成功的问题
May 11 Python
Django unittest 设置跳过某些case的方法
Dec 26 Python
python内置模块collections知识点总结
Dec 19 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
python能在浏览器能运行吗
Jun 17 Python
python实现企业微信定时发送文本消息的示例代码
Nov 24 Python
如何通过一篇文章了解Python中的生成器
Apr 02 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
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
PHP输出时间差函数代码
2013/01/28 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
四个PHP非常实用的功能
2015/09/29 PHP
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
[01:14]3.19DOTA2发布会 三代刀塔人第二代
2014/03/25 DOTA
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Django小白教程之Django用户注册与登录
2016/04/22 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
Python实现最常见加密方式详解
2019/07/13 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
详解pycharm2020.1.1专业版安装指南(推荐)
2020/08/07 Python
python 线程的五个状态
2020/09/22 Python
工作证明英文模板
2014/10/21 职场文书
教师年终个人总结
2015/02/11 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android
一文带你探究MySQL中的NULL
2021/11/11 MySQL