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的地形三维可视化Matplotlib和gdal使用实例
Dec 09 Python
python3.6使用pymysql连接Mysql数据库
May 25 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
Jul 09 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
Django中提示消息messages的设置方式
Nov 15 Python
Python.append()与Python.expand()用法详解
Dec 18 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
python之生成多层json结构的实现
Feb 27 Python
python 实现PIL模块在图片画线写字
May 16 Python
详解Pycharm与anaconda安装配置指南
Aug 25 Python
python如何发送带有附件、正文为HTML的邮件
Feb 27 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
PHP数组去重的更快实现方式分析
2018/05/09 PHP
<script defer> defer 是什么意思
2009/05/10 Javascript
jQuery 一个图片切换的插件
2011/10/09 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
深入理解React高阶组件
2017/09/28 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
Python 复平面绘图实例
2019/11/21 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
实习护士自我鉴定
2013/10/13 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
幼儿园教师国培感言
2014/02/02 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
观后感的写法
2015/06/19 职场文书
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript