本文和大家分享一下python3中zipfile模块的详细用法和技术难点分析。感兴趣的朋友可以关注一下。
一、zipfile模块的简述
在python中,Zipfile用于压缩和解压缩邮政编码。因为这是一种非常常见的zip格式,所以经常使用这个模块。
在这里,就如何使用zipfile做一些记录。方便自己也方便别人。
zipfile中有两个非常常用的类,分别是ZipFile和ZipInfo。在大多数情况下,我们只需要使用这两个类。
ZipFile是主类,用来创建和读取zip文件,ZipInfo是存储的zip文件的每个文件的信息。
我们来介绍一下这两个类的基本操作:
二、ZipFile和Zipinfo这两个类的基本操作
1、class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])
创建一个ZipFile对象来表示一个zip文件。file参数表示文件或类似文件的对象的路径;mode参数指示打开zip文件的模式,
默认值为“r”,表示读取现有的zip文件,或“w”或“a”,而“w”表示创建新的zip文档或覆盖现有的zip文档。
导入zip文件
F=zipfile.zipfile (filename,' r') #这里的第二个参数是R以读取zip文件,W或A以创建zip文件。
f.namelist()中的for _ name:# z . name list()将返回压缩包中所有文件名的列表。
打印(f_name)
#上面的代码是读取一个zip包中所有文件的名称。
“a”表示将数据附加到现有zip文档。参数compression表示编写zip文档时使用的压缩方法,其值可以是zipfile。ZIP_STORED或zipfile。ZIP _放气。如果要操作的zip文件的大小超过2G,allowZip64应该设置为True。
ZipFile还提供了以下常用的方法和属性:
ZipFile.getinfo(名称)
获取zip文档中指定文件的信息。返回一个zip文件。ZipInfo对象,包含文件的详细信息。
ZipFile.infolist()
获取zip文档中所有文件的信息,并返回一个zipfile列表。ZipInfo
ZipFile.namelist()
获取zip文档中所有文件的名称列表。
ZipFile.extract(成员[,路径[,pwd]])
将zip文档中的指定文件解压缩到当前目录。参数member指定要解压缩的文件的名称或相应的ZipInfo对象;参数path指定保存已分析文件的文件夹;
参数pwd是解压缩密码。以下示例将程序根目录下duoduo.zip中存储的所有文件提取到D:/Work目录中:
导入zip文件,操作系统
f=zip file . zip file(OS . path . join(OS . getcwd(),' duoduo . zip ')#拼接成一个路径
对于f.namelist()中的文件:
F.extract(file,r'd:/Work') #将文件解压缩到d:/Work中
f.close()
以上是os.getcwd的用法!
zip file . extract all([路径[,成员[,pwd]])
将zip文档中的所有文件解压到当前目录。参数members的默认值是zip文档中所有文件名的列表,或者您可以自己设置并选择要解压缩的文件名。
ZipFile.printdir()
将zip文档中的信息打印到控制台。
ZipFile.setpassword(pwd)
设置zip文档的密码。
ZipFile.read(名称[,pwd])
获取zip文档中指定文件的二进制数据。下面的示例演示了read()的用法。一个zip文档包含一个duoduo.txt的文本文件,使用read()方法读取其二进制数据,然后保存到d:/duoduo.txt。
导入zip文件,操作系统
zipFile=zipfile。ZipFile(os.path.join(os.getcwd(),' duoduo.zip '))
data=zipFile.read('duoduo.txt ')
# (lambda f,d: (f.write (d),f . close())(open(r ' d:/duoduo . txt ',' WB '),data) #一行语句完成文件写操作。仔细想想~ _ ~
以open(r . d:/duoduo . txt ',' wb ')为f:
对于数据中的d:
f .写(d)
zipFile.close()
ZipFile.write(文件名[,arcname[,压缩类型]])
将指定的文件添加到zip文档中。Filename是文件路径,arcname是添加到zip文档后保存的名称,参数compress_type表示压缩方式,其值可以是zipfile。ZIP_STORED或zipfile。ZIP _放气。下面的示例演示了如何创建一个zip文档并将文件D:/test.doc添加到压缩文档中。
导入zip文件,操作系统
zipFile=zipfile .zip文件(r d:/test。zip '),' w ')
zipFile.write(r'D:/test.doc ','保存的名字zip文件.ZIP _放气)
zipFile.close()
zipfile。writestr(zinfo _ or _ arcname,字节)
writestr()支持将二进制数据直接写入到压缩文档。
2、Class ZipInfo
ZipFile.getinfo(名称)方法返回的是一个ZipInfo对象,表示活力文档中相应文件的信息。它支持如下属性:
ZipInfo.filename:获取文件名称。
ZipInfo.date_time:获取文件最后修改时间。返回一个包含6个元素的元组:(年,月,日,时,分,秒)
ZipInfo.compress_type:压缩类型。
ZipInfo.comment:文档说明。
ZipInfo.extr:扩展项数据。
ZipInfo.create_system:获取创建该活力文档的系统。
ZipInfo.create_version:获取创建活力文档的PKZIP版本。
ZipInfo.extract_version:获取解压活力文档所需的PKZIP版本。
ZipInfo.reserved:预留字段,当前实现总是返回0。
ZipInfo.flag_bits: zip标志位。
ZipInfo.volume:文件头的卷标。
ZipInfo.internal_attr:内部属性。
ZipInfo.external_attr:外部属性。
ZipInfo.header_offset:文件头偏移位。
ZipInfo .CRC:未压缩文件的儿童权利委员会第三十二届会议。
ZipInfo.compress_size:获取压缩后的大小。
ZipInfo.file_size:获取未压缩的文件大小。
下面一个简单的例子说明这些属性的意思:
导入活力文件,操作系统
zipFile=zipfile .ZipFile(os.path.join(os.getcwd(),' duoduo.zip '))
zipInfo=zipFile.getinfo('文件中的文件. txt’)
打印('文件名:',zipInfo.filename) #获取文件名称
print ('date_time:',zipInfo.date_time) #获取文件最后修改时间。返回一个包含6个元素的元组:(年,月,日,时,分,秒)
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) #获取创建活力文档的PKZIP版本。
print ('extract_version:',zipInfo.extract_version) #获取解压活力文档所需的PKZIP版本。
print ('extract_version:',zipInfo.reserved) #预留字段,当前实现总是返回0。
print ('flag_bits:',zipInfo.flag_bits) #zip标志位。
print ('volume:',zipInfo.volume) #文件头的卷标。
print ('internal_attr:',zipInfo.internal_attr) #内部属性。
print ('external_attr:',zipInfo.external_attr) #外部属性。
print ('header_offset:',zipInfo.header_offset) #文件头偏移位。
打印(' CRC:',zipInfo .CRC) #未压缩文件的儿童权利委员会第三十二届会议。
print ('compress_size:',zipInfo.compress_size) #获取压缩后的大小。
print ('file_size:',zipInfo.file_size) #获取未压缩的文件大小。
zipFile.close() #
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。