zipfile zip文件操作


引入模块:

import zipfile

zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile类来操作zip文件,下面具体介绍一下:

zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])
功能:创建一个ZipFile对象,表示一个zip文件。
参数:
-参数file表示文件的路径或类文件对象(file-like object)
-参数mode指示打开zip文件的模式,默认值为r
r 表示读已经存在的zip文件
w 表示新建一个zip文档或覆盖一个已经存在的zip文档
a 表示将数据附加到一个现存的zip文档中。
-参数compression表示在写zip文档时使用的压缩方法
zipfile.ZIP_STORED 只是存储模式,不会对文件进行压缩,这个是默认值
zipfile.ZIP_DEFLATED 对文件进行压缩
-如果要操作的zip文件大小超过2G,应该将allowZip64设置为True。

ZipFile还提供了如下常用的方法和属性:


ZipFile.getinfo(name)

功能:获取zip文档内指定文件的信息。返回一个zipfile.ZipInfo对象,它包括文件的详细信息。将在下面 具体介绍该对象。

ZipFile.infolist()

功能:获取zip文档内所有文件的信息,返回一个zipfile.ZipInfo的列表。

ZipFile.namelist()

功能:获取zip文档内所有文件的名称列表。

ZipFile.extract(member[, path[, pwd]])

功能:将zip文档内的指定文件解压到当前目录。
参数:
member 指定要解压的文件名称或对应的ZipInfo对象
path 指定解析文件保存的文件夹
pwd 解压密码

下面一个例子将保存在程序根目录下的txt.zip内的所有文件解压到D:/Work目录:

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'txt.zip'))
for file in zipFile.namelist():
zipFile.extract(file, r'd:/Work')
zipFile.close() import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'txt.zip'))
for file in zipFile.namelist():
zipFile.extract(file, r'd:/Work')
zipFile.close()

ZipFile.extractall([path[, members[, pwd]]])

功能:解压zip文档中的所有文件到当前目录。
参数:
members 默认值为zip文档内的所有文件名称列表,也可以自己设置,选择要解压的文件名称。

ZipFile.printdir()

功能:将zip文档内的信息打印到控制台上。

ZipFile.setpassword(pwd)

功能:设置zip文档的密码。

ZipFile.read(name[, pwd])

功能:获取zip文档内指定文件的二进制数据。

下面的例子演示了read()的使用,zip文档内包括一个txt.txt的文本文件,使用read()方法读取其二进制数据,然后保存到D:/txt.txt。

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'txt.zip'))
data = zipFile.read('txt.txt')
#一行语句就完成了写文件操作。仔细琢磨哦~_~
(lambda f, d: (f.write(d), f.close()))(open(r'd:/txt.txt', 'wb'), data)
zipFile.close()

ZipFile.write(filename[, arcname[, compress_type]])

功能:将指定文件添加到zip文档中。
参数:
filename 文件路径
arcname 添加到zip文档之后保存的名称
compress_type 压缩方法,它的值可以是zipfile.ZIP_STORED 或zipfile.ZIP_DEFLATED

ZipFile.writestr(zinfo_or_arcname, bytes)

功能:writestr()支持将二进制数据直接写入到压缩文档。

ZipFile.getinfo(name)

功能:返回一个ZipInfo对象,表示zip文档中相应文件的信息。
它支持如下属性:
ZipInfo.filename 获取文件名称。
ZipInfo.date_time 获取文件最后修改时间。返回一个包含6个元素的元组:(年, 月, 日, 时, 分, 秒)
ZipInfo.compress_type 压缩类型。
ZipInfo.comment 文档说明。
ZipInfo.extr 扩展项数据。
ZipInfo.create_system 获取创建该zip文档的系统。
ZipInfo.create_version 获取、创建zip文档的PKZIP版本。
ZipInfo.extract_versio 获取、解压zip文档所需的PKZIP版本。
ZipInfo.reserved 预留字段,当前实现总是返回0。
ZipInfo.flag_bits zip标志位。
ZipInfo.volume 文件头的卷标。
ZipInfo.internal_attr 内部属性。
ZipInfo.external_attr 外部属性。
ZipInfo.header_offset 文件头偏移位。
ZipInfo.CRC 未压缩文件的CRC-32。
ZipInfo.compress_size 获取压缩后的大小。
ZipInfo.file_size 获取未压缩的文件大小。

下面一个简单的例子说明这些属性的意思:

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'txt.zip'))
zipInfo = zipFile.getinfo('doc.doc')
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()

python zip 压缩的更多相关文章

  1. Python ZIP压缩

    ru=lambda x:x.decode('u8') rp=lambda x:x.replace('\\','/') gb=lambda x:x.decode('gbk') class ZIP: de ...

  2. python zip压缩文件 并移动到指定目录

    需要引入的3个包: import os import shutil import zipfile 1. # 创建zip文件对象your_zip_file_obj = zipfile.ZipFile(' ...

  3. python zip压缩文件并设置密码

    zip     -P "123" -r  app.zip         app压缩文件 密码 压缩后名称 压缩对象名称 def zipDir(dirpath, outFullNa ...

  4. 用Python写一款属于自己的 简易zip压缩软件 附完成图(适合初学者)

    一.软件描述 用Python tkinter模块写一款属于自己的压缩软件.zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile来操作zip文件,具有功能:zip压缩功能,zip ...

  5. Python 黑客 --- 002 入门级 ZIP压缩文件口令暴力破解机

    Python 黑客 入门级实战:ZIP压缩文件口令暴力破解机 使用的系统:Ubuntu 14.04 LTS Python语言版本:Python 2.7.10 V 编写zip 压缩文件口令破解器需要使用 ...

  6. bzip2 zip 压缩后体积比 0.8:1

    1. 对.bz2 后缀文件 跳过不处理 2.逐行同字段的json文件,压缩后大小为原文件的12.81% 测试文件近似认为为逐行json文本数据,没有进行多文件重复测试,没有统计时间: {"u ...

  7. Python的压缩文件处理 zipfile & tarfile

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

  8. python zip函数(11)

    一.zip函数描述和使用 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,返回的结果可以直接强转为list列表,这样做的好处是节约了不少的 ...

  9. Android总结之Gzip/Zip压缩

    前言: 做过Android网络开发的都知道,在网络传输中我们一般都会开启GZIP压缩,但是出于刨根问底的天性仅仅知道如何开启就不能满足俺的好奇心的,所以想着写个demo测试一下比较常用的两个数据压缩方 ...

随机推荐

  1. 10、numpy——位运算

    NumPy 位运算 NumPy "bitwise_" 开头的函数是位运算函数. NumPy 位运算包括以下几个函数: 函数 描述 bitwise_and 对数组元素执行位与操作 b ...

  2. Centos 7.6安装mysql服务端5.7

    环境:centos 7.6,mysql server 5.7.26 新建文件夹/opt/mysql,并cd进去 运行wget http://dev.mysql.com/get/mysql-5.7.26 ...

  3. jquery 操作select,checkbox,radio (整理)

    在工作中经经常使用到select,checkbox,radio,今天有点空暇就整理一下,免得以后用的时候还要又一次找. 操作select下拉框 -- 获取值或选中项: 1, $("#sele ...

  4. 最小生成树,Prim算法实现

    最小生成树 所谓最小生成树,就是一个图的极小连通子图,它包含原图的所有顶点,并且所有边的权值之和尽可能的小. 首先看看第一个例子,有下面这样一个带权图: 它的最小生成树是什么样子呢?下图绿色加粗的边可 ...

  5. js操作对象属性用点和用中括号有什么不同

    书读百遍其义自见 学习<JavaScript设计模式>一书时,学习工厂模式这一章节,发现了对象后使用中括号的情况,如下: var Factory=function(type,content ...

  6. [转载]Linux上使用ssl进行端口转发

    原文地址:Linux上使用ssl进行端口转发 作者:呼延十 背景介绍 作为一个后端程序员,经常要和别人联调接口,每当这时,总是被公司的各种,dev,qa,pre,prod环境搞得头疼,,,我真的只是想 ...

  7. 安卓构架组件——向项目添加组件(Adding Components to your Project)

    在开始之前,建议阅读 应用架构指南. Before getting started, we recommend reading the Architecture Components Guide to ...

  8. java ArrayList存储基本类型

    package java06; /* 如果希望像集合ArrayList中存储基本数据类型数据,必须使用基本数据类型对应的“包装类” 基本数据类型 包装类(引用类型,包装类都位于java.lang包下 ...

  9. Raspbian 在虚拟机上运行,运行Flask,供宿主机访问

    Raspbian 在虚拟机上运行,启动Flask,供宿主机访问 参考ref 1, 在virtualbox上跑起来Raspbian OS 参考ref 2, 在Raspbian上安装并运行Falsk, 注 ...

  10. Java自定义注解学习

    1.定义一个枚举类,后面自定义注解时使用 package cn.tx.annotation.enums; /** * 定义枚举类型 * @author Administrator * */ publi ...