一、zipfile模块的简述

zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的,

在这里对zipfile的使用方法做一些记录。即方便自己也方便别人。

zipfile里有两个非常常用的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个class就可以了。

ZipFile是主要的类,用来创建和读取zip文件而ZipInfo是存储的zip文件的每个文件的信息的。

下面我们就来介绍这两个类的基本操作:

二、ZipFile和Zipinfo这两个类的基本操作

1、class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])

创建一个ZipFile对象,表示一个zip文件。参数file表示文件的路径或类文件对象(file-like object);参数mode指示打开zip文件的模式,

默认值为'r',表示读已经存在的zip文件,也可以为'w'或'a','w'表示新建一个zip文档或覆盖一个已经存在的zip文档,

import zipfile

f = zipfile.ZipFile(filename, 'r') # 这里的第二个参数用r表示是读取zip文件,w或a是创建一个zip文件for f_name in f.namelist(): #z.namelist() 会返回压缩包内所有文件名的列表。

print(f_name)#上面的代码是读取一个zip压缩包里所有文件的名字。

参数mode的三种模式实例

'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为解压密码。下面一个例子将保存在程序根目录下的duoduo.zip内的所有文件解压到D:/Work目录:import zipfile, os

f = zipfile.ZipFile(os.path.join(os.getcwd(), 'duoduo.zip'))  #拼接成一个路径

for file in f.namelist():

f.extract(file, r'd:/Work')     #在d:/Work中解压文件

f.close()

上面是os.getcwd的用法!!

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

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

ZipFile.printdir()

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

ZipFile.setpassword(pwd)

设置zip文档的密码。

ZipFile.read(name[, pwd])

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

import zipfile, os

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)  #一行语句就完成了写文件操作。仔细琢磨哦~_~with open(r'd:/duoduo.txt','wb') as f:    for d in data:

f.write(d)

zipFile.close()

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

将指定文件添加到zip文档中。filename为文件路径,arcname为添加到zip文档之后保存的名称, 参数compress_type表示压缩方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。下面的例子演示了如何创建一个zip文档,并将文件D:/test.doc添加到压缩文档中。import zipfile, os

zipFile = zipfile.ZipFile(r'D:/test.zip'), 'w')

zipFile.write(r'D:/test.doc', '保存的名字', zipfile.ZIP_DEFLATED)

zipFile.close()

ZipFile.writestr(zinfo_or_arcname, bytes)

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

2、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(), 'duoduo.zip'))

zipInfo = zipFile.getinfo('文件中的文件.txt')print ('filename:', 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) #获取创建该zip文档的系统。print ('create_version:', zipInfo.create_version) #获取 创建zip文档的PKZIP版本。print ('extract_version:', zipInfo.extract_version) #获取 解压zip文档所需的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) # 文件头偏移位。print ('CRC:', zipInfo.CRC) # 未压缩文件的CRC-32。print ('compress_size:', zipInfo.compress_size) #获取压缩后的大小。print ('file_size:', zipInfo.file_size) #获取未压缩的文件大小。zipFile.close() #

python3 zipfile_python3中zipfile模块的常用方法相关推荐

  1. Python3.7中time模块的time()、perf_counter()和process_time()的区别

    Python3.7中time模块的time方法.perf_counter方法和process_time方法的区别 1. time.time()方法 2. time.perf_counter()方法 3 ...

  2. python中zipfile的使用_详解python3中zipfile模块用法

    一.zipfile模块的简述 zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的, 在这里对zipfile的使用方法做一些记 ...

  3. python zipfile_详解python3中zipfile模块用法

    一.zipfile模块的简述 zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的, 在这里对zipfile的使用方法做一些记 ...

  4. python模块实例化_python中zipfile模块实例化解析

    文章内容由--"脚本之家"--提供,在此感谢脚本之家的贡献,该网站网址为:https://www.jb51.net/ 简介: zipfile是python里用来做zip格式编码的压 ...

  5. python3 zipfile_Python之zipfile模块的使用

    1.判断是否是zip文件 #!/usr/bin/env python3#encoding: utf-8 importzipfile filenames= ['tcp_server.py', 'test ...

  6. python3.5怎么使用-Python3.5中NumPy模块的使用图文教程

    Python3.5基础之NumPy模块的使用图文与实例详解 本文实例讲述了Python3.5基础之NumPy模块的使用.分享给大家供大家参考,具体如下: 1.简介 2.多维数组--ndarray #! ...

  7. python zipfile教程_Python中zipfile压缩文件模块的基本使用教程

    zipfile Python 中 zipfile 模块提供了对 zip 压缩文件的一系列操作. f=zipfile.ZipFile("test.zip",mode="&q ...

  8. python3 zipfile模块_Python之zipfile模块的使用

    1.判断是否是zip文件 #!/usr/bin/env python3#encoding: utf-8 importzipfile filenames= ['tcp_server.py', 'test ...

  9. python3 random函数_Python3 中 random模块

    Python3 中 random模块 Python中的random模块用于生成随机数. 下面具体介绍random模块的功能: 1.random.random() 用于生成一个0到1的 随机浮点数:0& ...

最新文章

  1. 说明:最新谷歌AI智商不超过6岁研究来自中国科学院而非美国康内尔大学
  2. Quartz框架中的JobStore
  3. ETH联合Meta和鲁汶大学 提出视频恢复算法VRT,在视频超分辨率、去模糊和去噪性能达到SOTA...
  4. altera fpga sdi输出方案_高段位攻城狮是这样解决SI分析、DDR、FPGA国产化问题的! | 电巢直播答疑汇总...
  5. Eclipse 插件 在线安装 收集
  6. JavaScript学习-函数
  7. 方舟建服务器局域网显示,方舟生存进化怎么新建局域网
  8. unity3d-学习笔记8-卡牌游戏制作(实现动态读取卡片信息并且在游戏界面展现)
  9. uniapp实现IM即时通讯仿微信聊天功能
  10. python京东注册机_京东自动注册
  11. h5策划书_DIYH5|3.12世界睡眠日H5策划方案
  12. 社区发现算法——(Spectral Clustering)谱聚类算法
  13. 使用谷歌浏览器模拟发送http请求
  14. eclipse安装nodejs插件nodeclipse
  15. 年龄计算机在线计算适合你的对象,抖音年龄计算器恋爱对象生日,年龄计算器适合你的恋爱对象...
  16. Speedoffice(excel)如何利用MIN函数求最小值
  17. java抠图人物背景图片_人物抠图换背景两种实用方法!
  18. 【架构师实践课】微服务如何拆分?大型微服务项目从何下手?
  19. 机器学习-雅可比式与多元高斯分布
  20. Centos6安装RabbitMQ

热门文章

  1. vue暂存功能_示例vue 的keep-alive缓存功能的实现
  2. 编译OpenCV 2+ with CUDA 9+
  3. Linux下正确使用getifaddrs()函数避免内存泄露
  4. Linux系统性能分析: CPU
  5. Scrapy shell
  6. Melkman's Algorithm
  7. (转)使用 Spring缓存抽象 支持 EhCache 和 Redis 混合部署
  8. 程序员跳槽全攻略——读书笔记
  9. PCL—低层次视觉—点云分割(基于凹凸性)
  10. FWFT FIFO读操作注意