zip文件格式是常用的文档压缩标准,ziplib模块使用ZipFile类处理zip文件。 具体说明如下。
classzipfile.zipfile(file[,mode[,compression[,allowZip64]]] )
创建表示zip文件的ZipFile对象。 参数file是文件的路径或类文件对象(file-like object ); 参数mode表示打开zip文件的模式。 默认值为“r”,表示要读取现有的zip文件。 或者,在“w”或“a”中,“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目录中:
导入zipfile,操作系统
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文档中指定文件的二进制数据。 以下示例说明如何使用zip文档中的txt.txt文本文件,以及如何使用read ()方法读取二进制数据并将其保存在D:/txt.txt中的read )。
#coding=gbk
导入zipfile,操作系统
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 ' ) () ) )
在#1行中写入文件的操作完成。 好好想想哦~~~
zipFile.close (
zipfile.write(filename[,arcname[,compress_type]] ) )
将指定的文件添加到zip文档中。 filename表示文件路径,arcname表示添加到zip文档后保存的名称,compress_type参数表示压缩方法,值为zipfile. ZIP_STORED或zipfile.zip _ type 此示例说明如何创建zip文档并将文件D:/test.doc添加到压缩文档中:
导入zipfile,操作系统
zipfile=zipfile.zipfile (r ' d :/test.zip ' )、' w ' )
zipfile.write (r ' d :/test.doc ',' ok.doc ',zipfile.ZIP_DEFLATED )。
zipFile.close (
zipfile.writestr (zinfo _ or _ arc name,bytes ) ) ) ) ) ) )。
writestr ) )支持将二进制数据直接写入压缩文档。
Class ZipInfo
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_version: 获取 解压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()
感觉使用zipfile模块来处理zip文件真的很简单。想当初在.NET平台下,使用sharpziplib压缩、解压一个文件,我花了N多时间,找了N多英文资源,才写出一个能压缩文件的demo。而现在使用Python,通过阅读python手册,一两个小时就掌握了zipfile模块的基本使用。哈哈,使用Python,真爽!
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
相关文章
相关视频
网友评论
文明上网理性发言,请遵守 新闻评论服务协议我要评论
立即提交
专题推荐独孤九贱-php全栈开发教程
全栈 100W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
玉女心经-web前端开发教程
入门 50W+
主讲:仁爱的小蝴蝶 由浅入深、明快简洁,非常适合前端学习入门
天龙八部-实战开发教程
实战 80W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习