这里讨论使用Python解压如下五种压缩文件:

.gz .tar  .tgz .zip .rar

简介

gz: 即gzip,通常只能压缩一个文件。与tar结合起来就可以实现先打包,再压缩。

tar: linux系统下的打包工具,只打包,不压缩

tgz:即tar.gz。先用tar打包,然后再用gz压缩得到的文件

zip: 不同于gzip,虽然使用相似的算法,可以打包压缩多个文件,不过分别压缩文件,压缩率低于tar。

rar:打包压缩文件,最初用于DOS,基于window操作系统。压缩率比zip高,但速度慢,随机访问的速度也慢。

关于zip于rar之间的各种比较,可见:

http://www.comicer.com/stronghorse/water/software/ziprar.htm

gz

由于gz一般只压缩一个文件,所有常与其他打包工具一起工作。比如可以先用tar打包为XXX.tar,然后在压缩为XXX.tar.gz

解压gz,其实就是读出其中的单一文件,Python方法如下:

import gzip
import os
def un_gz(file_name):"""ungz zip file"""f_name = file_name.replace(".gz", "")#获取文件的名称,去掉g_file = gzip.GzipFile(file_name)#创建gzip对象open(f_name, "w+").write(g_file.read())#gzip对象用read()打开后,写入open()建立的文件中。g_file.close()#关闭gzip对象<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>

tar

XXX.tar.gz解压后得到XXX.tar,还要进一步解压出来。

*注:tgz与tar.gz是相同的格式,老版本DOS扩展名最多三个字符,故用tgz表示。

由于这里有多个文件,我们先读取所有文件名,然后解压,如下:

import tarfile
def un_tar(file_name):untar zip file"""tar = tarfile.open(file_name)names = tar.getnames()if os.path.isdir(file_name + "_files"):passelse:os.mkdir(file_name + "_files")#由于解压后是许多文件,预先建立同名文件夹for name in names:tar.extract(name, file_name + "_files/")tar.close()

*注:tgz文件与tar文件相同的解压方法。

zip

与tar类似,先读取多个文件名,然后解压,如下:

import zipfile
def un_zip(file_name):"""unzip zip file"""zip_file = zipfile.ZipFile(file_name)if os.path.isdir(file_name + "_files"):passelse:os.mkdir(file_name + "_files")for names in zip_file.namelist():zip_file.extract(names,file_name + "_files/")zip_file.close()

rar

因为rar通常为window下使用,需要额外的Python包rarfile。

可用地址: http://sourceforge.net/projects/rarfile.berlios/files/rarfile-2.4.tar.gz/download

解压到Python安装目录的/Scripts/目录下,在当前窗口打开命令行,

输入Python setup.py install

安装完成。

import rarfile
import os
def un_rar(file_name):"""unrar zip file"""rar = rarfile.RarFile(file_name)if os.path.isdir(file_name + "_files"):passelse:os.mkdir(file_name + "_files")os.chdir(file_name + "_files"):rar.extractall()rar.close()

[Python]处理压缩文件相关推荐

  1. python读写压缩文件使用gzip和bz2

    python读写压缩文件使用gzip和bz2 #读取压缩文件 # gzip compression import gzip with gzip.open('somefile.gz', 'rt') as ...

  2. Python的压缩文件处理 zipfile tarfile

    本文从以下两个方面, 阐述Python的压缩文件处理方式: 一. zipfile 二. tarfile 一. zipfile 虽然叫zipfile,但是除了zip之外,rar,war,jar这些压缩( ...

  3. python读压缩文件内容_Python读写压缩文件的方法

    问题 你想读写一个gzip或bz2格式的压缩文件. 解决方案 gzip 和bz2模块可以很容易的处理这些文件. 两个模块都为 open()函数提供了另外的实现来解决这个问题. 比如,为了以文本形式读取 ...

  4. python gzip压缩文件

    python gzip压缩文件 下面的代码实现用gzip格式压缩文件,需要引用gzip包. #! import string import gzip from optparse import Opti ...

  5. python读取压缩文件时乱码,zipfile解压缩包,出现中文乱码问题问题

    python读取压缩文件时乱码,zipfile解压缩包,出现中文乱码问题问题 问题描述--python 使用zipfile模块 读取并且解压缩包,出现中文乱码问题 问题原因 python 使用这个模块 ...

  6. python读压缩文件内容_使用Python读写及压缩和解压缩文件的示例

    读写文件 首先看一个例子: f = open('thefile.txt','w') #以写方式打开, try: f.write('wokao') finally: f.close() 文件的打开方式: ...

  7. python读取压缩文件的指定后缀的文件_python打包压缩、读取指定目录下的指定类型文件...

    下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch ...

  8. python zipfile压缩文件夹

    在使用python zipfile模块进行压缩文件创建的时候,发现貌似只有zipfile对象的write()方法对文件的添加,那么如何将一个文件夹压缩添加到压缩文件中呢? ①直接write() dir ...

  9. 使用Python操作压缩文件

    我们经常使用压缩程序对文件进行压缩打包,在 Python 中也提供了相应的 zipfile 模块方便我们对 ZIP 压缩文件进行操作. 读取 ZIP 压缩文件 读取 ZIP 压缩文件必须先创建 Zip ...

最新文章

  1. K-d tree 算法
  2. 华大基因回复深交所:“14万中国人基因大数据”项目与外方机构无关
  3. RSS制作阅读器(利用RssToolkit for asp.net 2.0)
  4. python在哪里写代码比较适合-适合练习的10个Python项目,每个项目都不到500行代码...
  5. pat 乙级 1005 继续(3n+1)猜想(C++)
  6. 架构实战:(一)Redis采用主从架构的原因
  7. 分成互质组 (信息学奥赛一本通-T1221)
  8. R+Hadoop大数据方案有哪些坑?
  9. Yaml锚点和别名*
  10. linux mysql恢复数据_删库不跑路详解MySQL数据恢复
  11. jQuery源码06-jQuery = function(){};给JQ对象,添加一些方法和属性,extend : JQ的继承方法,jQuery.extend()...
  12. http 响应消息解码_响应生成所需的解码策略
  13. Spring Framework 官方文档学习(二)之IoC容器与bean lifecycle
  14. 如何在51单片机实现日程提醒(生日闹钟)
  15. 医学影像SCI发表攻略
  16. 巴别时代2017校园招聘宣讲+笔试
  17. 马路上“低头族”的交通隐患 ,小心埋头苦干的恶果
  18. java调用百度翻译_Java调用百度API实现翻译-Go语言中文社区
  19. 旁路电容和去耦电容基础知识
  20. vue动画transition

热门文章

  1. 软件工程7-软件测试
  2. Native.js 读写NFC数据
  3. [量子计算]日常生活中一些量子世界相关的概念
  4. Vue跨域访问后端接口问题解决
  5. 浅谈文本生成或者文本翻译解码策略
  6. docker删除/var/lib/docker/overlay2 后无法创建镜像,或者拉取镜像
  7. linux 重置bios密码忘记,Windows10专业版下重置BIOS密码的技巧
  8. Unity给图片添加点击事件
  9. oracle enq ta,【案例】Oracle等待事件event enq: KO - fast object checkpoint解决办法
  10. SQL数据库查询LIMIT 数据分页