python3 zipfile_python3中zipfile模块的常用方法
一、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模块的常用方法相关推荐
- Python3.7中time模块的time()、perf_counter()和process_time()的区别
Python3.7中time模块的time方法.perf_counter方法和process_time方法的区别 1. time.time()方法 2. time.perf_counter()方法 3 ...
- python中zipfile的使用_详解python3中zipfile模块用法
一.zipfile模块的简述 zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的, 在这里对zipfile的使用方法做一些记 ...
- python zipfile_详解python3中zipfile模块用法
一.zipfile模块的简述 zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的, 在这里对zipfile的使用方法做一些记 ...
- python模块实例化_python中zipfile模块实例化解析
文章内容由--"脚本之家"--提供,在此感谢脚本之家的贡献,该网站网址为:https://www.jb51.net/ 简介: zipfile是python里用来做zip格式编码的压 ...
- python3 zipfile_Python之zipfile模块的使用
1.判断是否是zip文件 #!/usr/bin/env python3#encoding: utf-8 importzipfile filenames= ['tcp_server.py', 'test ...
- python3.5怎么使用-Python3.5中NumPy模块的使用图文教程
Python3.5基础之NumPy模块的使用图文与实例详解 本文实例讲述了Python3.5基础之NumPy模块的使用.分享给大家供大家参考,具体如下: 1.简介 2.多维数组--ndarray #! ...
- python zipfile教程_Python中zipfile压缩文件模块的基本使用教程
zipfile Python 中 zipfile 模块提供了对 zip 压缩文件的一系列操作. f=zipfile.ZipFile("test.zip",mode="&q ...
- python3 zipfile模块_Python之zipfile模块的使用
1.判断是否是zip文件 #!/usr/bin/env python3#encoding: utf-8 importzipfile filenames= ['tcp_server.py', 'test ...
- python3 random函数_Python3 中 random模块
Python3 中 random模块 Python中的random模块用于生成随机数. 下面具体介绍random模块的功能: 1.random.random() 用于生成一个0到1的 随机浮点数:0& ...
最新文章
- 说明:最新谷歌AI智商不超过6岁研究来自中国科学院而非美国康内尔大学
- Quartz框架中的JobStore
- ETH联合Meta和鲁汶大学 提出视频恢复算法VRT,在视频超分辨率、去模糊和去噪性能达到SOTA...
- altera fpga sdi输出方案_高段位攻城狮是这样解决SI分析、DDR、FPGA国产化问题的! | 电巢直播答疑汇总...
- Eclipse 插件 在线安装 收集
- JavaScript学习-函数
- 方舟建服务器局域网显示,方舟生存进化怎么新建局域网
- unity3d-学习笔记8-卡牌游戏制作(实现动态读取卡片信息并且在游戏界面展现)
- uniapp实现IM即时通讯仿微信聊天功能
- python京东注册机_京东自动注册
- h5策划书_DIYH5|3.12世界睡眠日H5策划方案
- 社区发现算法——(Spectral Clustering)谱聚类算法
- 使用谷歌浏览器模拟发送http请求
- eclipse安装nodejs插件nodeclipse
- 年龄计算机在线计算适合你的对象,抖音年龄计算器恋爱对象生日,年龄计算器适合你的恋爱对象...
- Speedoffice(excel)如何利用MIN函数求最小值
- java抠图人物背景图片_人物抠图换背景两种实用方法!
- 【架构师实践课】微服务如何拆分?大型微服务项目从何下手?
- 机器学习-雅可比式与多元高斯分布
- Centos6安装RabbitMQ