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基础教程之python消息摘要算法使用示例
Feb 10 Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
利用aardio给python编写图形界面
Aug 21 Python
python3如何将docx转换成pdf文件
Mar 23 Python
Python下使用Scrapy爬取网页内容的实例
May 21 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
python实现动态数组的示例代码
Jul 15 Python
Python基础之字符串常见操作经典实例详解
Feb 26 Python
Python列表去重复项的N种方法(实例代码)
May 12 Python
Python机器学习应用之工业蒸汽数据分析篇详解
Jan 18 Python
Python实现聚类K-means算法详解
Jul 15 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
js控制框架刷新
2008/08/01 Javascript
一个选择最快的服务器转向代码
2009/04/27 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
2016/11/07 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
vue.js实例对象+组件树的详细介绍
2017/10/20 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
python 常用的基础函数
2018/07/10 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
社会实践自我鉴定
2013/11/07 职场文书
运动会100米解说词
2014/01/23 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
车间主任岗位职责
2015/02/03 职场文书
死亡诗社观后感
2015/06/05 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
vue3不同环境下实现配置代理
2022/05/25 Vue.js