赞
踩
目录
Python中解压缩和压缩zip文件需要用到ZipFile类和ZipInfo类
class zipfile.ZipFile(file [,mode [,compression [,allowZip64] ] ])
ZipFile类构造函数,打开一个zip文件,并返回该zip文件的ZipFile对象。
ZipFile包含的主要方法有以下几个:
关闭zip压缩文件。在程序退出时,必须调用close函数,否则一些必须的记录不会被写到文件中。
返回压缩文件中名为name的文件的ZipInfo对象。如果name文件不存在,则抛出KeyError异常
返回一个包含了压缩文件中所有文件各自对应的ZipInfo对象的列表。列表中的排列顺序和在实际压缩文件中的排列顺序相同。
返回一个包含了压缩文件中所有文件的名字的列表。
解压压缩文件中一个文件得到类文件(file-like)对象。
注意:
1、file-like对象是只读的,且提供了如下函数:read()、readline()、readlines()、__iter__()、next()
2、open()、read()和extract()函数,都接受一个文件名或者一个ZipInfo对象。当zip文件中存在重名的文件时,你会喜欢用这个方法的。
解压zip文件中的文件member到当前工作目录。文件的信息会尽可能准确的被解压出来。path指示解压到另一个目录。pwd是解压密码。
解压所有文件到当前工作目录。path指示解压到另一个目录。pwd是解压密码。
以表格形式显示压缩文件中所有文件。
设置pwd为默认解压密码,用来解压加密的文件。
返回压缩文件中name文件的字节(bytes)。压缩文件必须是以read或者append模式打开。
对已经关闭的zip文件调用read()会产生一个RuntimeError的异常。
ZipInfo类的实例由ZipFile对象的getinfo()和infolist()函数返回。每一个对象值保存压缩包中一个文件的信息。ZipInfo对象有如下属性:
压缩包中的该文件名
压缩包中该文件的最新修改时间,是一个包含6个元素的元组tuple。
文件的压缩类型
文件的注释
我们要读取zip文件的内容,首先需要创建一个ZipFile对象,要创建一个 ZipFile对象,就需要调用 zipfile.ZipFile()函数, 向它传入一个字符串, 表示.zip 文件的文件名。需要注意的是zipfile和ZipFile的区别,zipfile是Python中的一个模块,而ZipFile()是这个模块中的一个函数。
读取压缩文件代码示例:
- #coding:utf-8
- import zipfile,os
- def readzip_file(zip_dir):
- zip_name = zip_dir+'\\my_file.zip'
- MyZipfile = zipfile.ZipFile(zip_name)
- fileList = MyZipfile.namelist() #获取压缩文件中的所有文件名称列表
- print(fileList)
- print(MyZipfile.getinfo(fileList[1]).file_size) #获取文件列表中第2个文件的大小
- MyZipfile.close()
-
- if __name__=="__main__":
- print('---开始读取压缩文件---')
- zip_dir = os.getcwd() #获取压缩文件所在目录
- print('文件路径:'+zip_dir)
- read_file = readzip_file(zip_dir)
- print('---读取压缩文件完成---')
-
上例中我们用到了ZipFile 对象的namelist()方法和getinfo()方法,namelist()返回 ZIP 文件中包含的所有文件和文件夹的字符串的列表。getinfo()方法,返回一个关于特定文件的 ZipInfo 对象,ZipInfo 对象有自己的属性,如file_size和 compress_size,它们分别表示原来文件大小和压缩后文件大小
ZipFile 对象的 extractall()方法从 ZIP 文件中解压缩所有文件和文件夹, 放到当前工作目录中。
ZipFile 对象的 extract()方法从 ZIP 文件中解压缩单个文件。
- def unzip_file(zip_dir):
- zip_dir = os.getcwd()
- MyZipfile = zipfile.ZipFile('my_file.zip')
- Myextract_file = MyZipfile.extractall('myfile') # 解压缩文件
要创建压缩 ZIP 文件, 必须以“写模式”打开 ZipFile 对象,即传入'w'作为第二个参数( 这类似于向 open()函数传入'w',以写模式打开一个文本文件)。向 ZipFile 对象的 write()方法传入一个路径, Python 就会压缩该路径所指的文件, 将它加到 ZIP 文件中。 write()方法的第一个参数是一个字符串, 代表要添加的文件名。第二个参数是“压缩类型”参数,它告诉计算机使用怎样的算法来压缩文件。可以总是将这个值设置为 zipfile.ZIP_DEFLATED( 这指定了 deflate 压缩算法,它对各种类型的数据都很有效)。
- def compressed_files(zip_dir):
- zip_dir = os.getcwd() #获取文件路径
- newZip = zipfile.ZipFile('my_new_file.zip','w')
- newZip.write('myfile//my_file//mytext.txt',compress_type=zipfile.ZIP_DEFLATED) #压缩文件
- newZip.close()
像写入文件一样,写模式将擦除 ZIP 文件中所有原有的内容。如果只是希望将文件添加到原有的 ZIP 文件中, 就要向zipfile.ZipFile()传入'a'作为第二个参数,以添加模式打开 ZIP 文件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。