3.7Python之解压缩ZIP文件

标签: ZipFile Python 压缩 解压
27人阅读 评论(0) 收藏 举报
分类:

zip文件

  zip文件格式是通用的文档压缩标准。自1.6版本起,Python中zipfile模块能够直接处理zip文件里的数据,例如需要将对应目录或多个文件打包或压缩成zip格式,或者需要查看一个zip格式的归档文件中部分或者所有文件同时避免讲这些文件展开到磁盘上。使用ZipFile类来操作zip文件。
这里写图片描述
创建一个ZipFile对象,表示一个zip文件。

  • 参数file:文件的路径或者类似文件对象
  • 参数mode:读“r”,写入“w”,添加“a”
  • 参数compression:ZIP_STORED(无压缩),ZIP_DEFLATED(压缩,需要zlib支持)
  • 参数allowZip64:默认情况下报错,将其设为Trus,ZipFIle将用ZIP64扩展进行创建文件。

解压ZIP文档中的所有文件到指定目录

下面示例演示了读取一个ZIP文档,将文档里所有文件解压到名为“work”的文件里。

#-*-coding: UTF-8 -*-
import zipfile

if __name__ == '__main__':
    zFile = zipfile.ZipFile("F:\\txt.zip", "r")
    #ZipFile.namelist(): 获取ZIP文档内所有文件的名称列表
    for fileM in zFile.namelist(): 
        zFile.extract(fileM, "F:\\work")
    zFile.close();

读取ZIP文档内某个文件

read(self, name, pwd=None)获取ZIP文档内文件的二进制数据
下面例子演示了使用read方法读取ZIP文档中ok.txt文件的数据,并写到copy.txt文件中。

#-*-coding: UTF-8 -*-  
import zipfile

if __name__ == '__main__':
    zipFile = zipfile.ZipFile('F:\\test.zip', 'r')

    data = zipFile.read('ok.txt')

    (lambda f, d: (f.write(d), f.close()))(open("F:\\copy.txt", 'w'), data)

    zipFile.close()

将文件生成ZIP文档

write(self, filename, arcname=None, compress_type=None)将指定文件写入ZIP文档中。

  • 参数filename:需要写入文件的路径
  • 参数arcname:文件写入ZIP文档后保存的文件名
  • 参数compress_type:压缩方法(ZIP_STORED或ZIP_DEFALTED)

下面例子演示了创建一个ZIP文档,将test.docx文件写入压缩文档里。

#-*-coding: UTF-8 -*-  
import zipfile

if __name__ == '__main__':
    zipFile = zipfile.ZipFile('F:\\test.zip', 'w')
    zipFile.write('F:\\test.docx', 'ok.docx', zipfile.ZIP_DEFLATED)
    zipFile.close()

获取ZIP文档中某个文件的信息

getinfo(name)返回一个ZipInfo类的对象。

#-*-coding: UTF-8 -*-  
import zipfile

if __name__ == '__main__':
    zipFile = zipfile.ZipFile("F:\\test.zip", "r")
    zipInfo = zipFile.getinfo('ok.docx')
    print 'filename:', zipInfo.filename
    print 'date_time:', zipInfo.date_time
    print 'compress_type:', zipInfo.compress_type
    print 'comment:', zipInfo.comment
    print 'extra:', zipInfo.extra
    print 'create_system:', zipInfo.create_system
    print 'create_version:', zipInfo.create_version
    print 'extract_version:', zipInfo.extract_version
    print 'extract_version:', zipInfo.reserved
    print 'flag_bits:', zipInfo.flag_bits
    print 'volume:', zipInfo.volume
    print 'internal_attr:', zipInfo.internal_attr
    print 'external_attr:', zipInfo.external_attr
    print 'header_offset:', zipInfo.header_offset
    print 'CRC:', zipInfo.CRC
    print 'compress_size:', zipInfo.compress_size
    print 'file_size:', zipInfo.file_size
    zipFile.close()
查看评论

iOS开发之解压缩zip文件

转载自:   http://blog.sina.com.cn/s/blog_833996210100udkl.html 从http://code.google.com/p/ziparchive/ 上...
  • chenyong05314
  • chenyong05314
  • 2015-05-19 20:59:56
  • 3198

java解压和压缩ZIP文件的功能

  • 2017年09月21日 09:19
  • 1.9MB
  • 下载

java zip递归压缩解压代码

ZIP压缩类import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import j...
  • zhanngle
  • zhanngle
  • 2008-01-14 10:42:00
  • 4928

java实现对rar文件和zip文件的解压缩

java实现对rar文件和zip文件的解压缩 一.对zip文件的解压缩 1.1 使用ZIP4J实现 zip4j官方说明: Create, Add, Extract, Update, R...
  • u012100371
  • u012100371
  • 2017-07-12 16:47:53
  • 2985

Fedora下解压缩的相关问题

Fedora安装unrar软件   转载自:http://blog.163.com/jifei881121@126/blog/static/34915259201083032413632/ ...
  • it1988888
  • it1988888
  • 2012-10-12 10:51:36
  • 5053

Nginx 基本功能 - 压缩和解压缩

原文地址 1. 概述 通过压缩响应数据,可以减少传输数据的大小。但是,由于压缩发生在请求的处理过程中,会增加相当大的处理开销,增大延时,对性能产生负面影响。Nginx 会在数据发送到客户端之前...
  • kikajack
  • kikajack
  • 2018-02-14 18:07:23
  • 74

用C实现解压缩ZIP文件到内存

ZIP文件格式是非常常用的一种压缩格式,比如M$新的EXCEL文件格式其实就是一个ZIP压缩文件,压缩文件内部是几个带路径的XML文件。如果我们想解析EXCEL文件的内容就要把压缩文件内的XML文件先...
  • alpbrook
  • alpbrook
  • 2018-03-08 16:12:04
  • 47

VB.NET使用ZipPackage实现ZIP文件压缩解压缩示例

  • 2008年09月17日 15:14
  • 549KB
  • 下载

linux压缩(解压缩)命令详解

linux压缩(解压缩)命令详解注:本文参考自互联网,但是经过笔者的修改一.tar命令         tar可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在...
  • hbcui1984
  • hbcui1984
  • 2007-04-25 10:17:00
  • 220336

C# 压缩和解压缩(Gzip和Zip的方式)

使用ICSharpCode.SharpZipLib.dll来压缩/解压(压缩效率比GZip要高一点) public static class ZipUtil     {         /// ...
  • csharp25
  • csharp25
  • 2011-09-27 20:28:45
  • 13364
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 22万+
    积分: 3582
    排名: 1万+
    交流学习
      VTK交流群:678462859
    博客专栏
    最新评论