Python模块zipfile原理及使用办法详解
zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的
zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个class就可以了。
ZipFile是主要的类,用来创建和读取zip文件
ZipInfo是存储的zip文件的每个文件的信息的。
比如要读取一个zipfile,这里假设filename是一个文件的路径:
import zipfile z = zipfile.ZipFile(filename, 'r') # 这里的第二个参数用r表示是读取zip文件,是创建一个zip文件 for f in z.namelist(): print f
上面的代码是读取一个zip压缩包里所有文件的名字。z.namelist() 会返回压缩包内所有文件名的列表。
再看看下面一个
import zipfile z = zipfile.ZipFile(filename, 'r') for i in z.infolist(): print i.file_size, i.header_offset
这里使用了z.infolist(), 它返回的就是压缩包内所有文件的信息,就是一个ZipInfo的列表。一个ZopInfo对象中包含了压缩包内一个文件的信息,其中比较常用的是 filename, file_size, header_offset, 分别为文件名,文件大小,文件数据在压缩包中的偏移。其实之前的z.namelist()就是读取的ZopInfo中的filename,组成一个 list返回的。
从压缩包里解压缩出一个文件的方法是使用ZipFile的read方法
import zipfile z = zipfile.ZipFile(filename, 'r') print z.read(z.namelist()[0])
这样就读取出z.namelist()中的第一个文件,并且输出到屏幕,也可以把它存储到文件。
下面是创建zip压缩包的方法
与读取的方法其实很类似的
import zipfile, os z = zipfile.ZipFile(filename, '') # 注意这里的第二个参数是,这里的filename是压缩包的名字 #假设要把一个叫testdir中的文件全部添加到压缩包里(这里只添加一级子目录中的文件) if os.path.isdir(testdir): for d in os.listdir(testdir): z.rite(testdir+os.sep+d) # close() 是必须调用的! z.close()
上面的代码非常的简单。
想想还有一个问题,如果我把一个test/111.txt 添加到压缩包里之后我电脑维修网希望在包里它放到test22/111.txt怎么办呢?
其实这个就是ZipFile的rite方法中第二个参数的作用了。只需要这样调用z.rite("test/111.txt", "test22/111.txt")
空调维修
- 温岭冰箱全国统一服务热线-全国统一人工【7X2
- 荆州速热热水器维修(荆州热水器维修)
- 昆山热水器故障码5ER-昆山热水器故障码26
- 温岭洗衣机24小时服务电话—(7X24小时)登记报
- 统帅热水器售后维修服务电话—— (7X24小时)登
- 阳江中央空调统一电话热线-阳江空调官方售后电
- 乌鲁木齐阳春燃气灶厂家服务热线
- 珠海许昌集成灶售后服务电话-全国统一人工【
- 乌鲁木齐中央空调维修服务专线-乌鲁木齐中央空
- 新沂热水器故障电话码维修-新沂热水器常见故障
- 诸城壁挂炉24小时服务热线电话
- 靖江空调24小时服务电话-——售后维修中心电话
- 空调室外滴水管维修(空调室外排水管维修)
- 九江壁挂炉400全国服务电话-(7X24小时)登记报修
- 热水器故障码f.22怎么解决-热水器f0故障解决方法
- 营口热水器售后维修服务电话—— 全国统一人工