本文实例讲述了Python实现压缩和解压缩ZIP文件的方法。分享给大家供大家参考,具体如下:

有时我们需要在 Python 中使用 zip 文件,而在1.6版中,Python 就已经提供了 zipfile 模块可以进行这样的操作。不过 Python 中的 zipfile 模块不能处理多卷的情况,不过这种情况并不多见,因此在通常情况下已经足够使用了。下面我只是对一些基本的 zipfile 操作进行了记录,足以应付大部分的情况了。
zipfile 模块可以让你打开或写入一个 zip 文件。比如:
import zipfile
z = zipfile.ZipFile('zipfilename', mode='r')
这样就打开了一个 zip 文件,如果mode为'w'或'a'则表示要写入一个 zip 文件。如果是写入,则还可以跟上第三个参数:
compression=zipfile.ZIP_DEFLATED 或compression=zipfile.ZIP_STORED ZIP_DEFLATED是压缩标志,如果使用它需要编译了zlib模块。而后一个只是用zip进行打包,并不压缩。
在打开了zip文件之后就可以根据需要是读出zip文件的内容还是将内容保存到 zip 文件中。
读出zip中的内容
很简单,zipfile 对象提供了一个read(name)的方法。name为 zip文件中的一个文件入口,执行完成之后,将返回读出的内容,你把它保存到想到的文件中即可。
写入zip文件
有两种方式,一种是直接写入一个已经存在的文件,另一种是写入一个字符串。
对 于第一种使用 zipfile 对象的 write(filename, arcname, compress_type),后两个参数是可以忽略的。第一个参数是文件名,第二个参数是表示在 zip 文件中的名字,如果没有给出,表示使用与filename一样的名字。compress_type是压缩标志,它可以覆盖创建 zipfile 时的参数。第二种是使用 zipfile 对象的 writestr(zinfo_or_arcname, bytes),第一个参数是zipinfo 对象或写到压缩文件中的压缩名,第二个参数是字符串。使用这个方法可以动态的组织文件的内容。
需要注意的是在读出时,因为只能读出内容,因此如果想实现按目录结构展开 zip 文件的话,这些操作需要自已来完成,比如创建目录,创建文件并写入。而写入时,则可以根据需要动态组织在 zip 文件中的目录结构,这样可以不按照原来的目录结构来生成 zip 文件。
于是我为了方便使用,创建了自已的一个 ZFile 类,主要是实现象 winrar 的右键菜单中的压缩到的功能--即将一个zip文件压缩到指定目录,自动创建相应的子目录。再有就是方便生成 zip 文件。类源码为:
# coding:cp936
# Zfile.py
# xxteach.com
import zipfile
import os.path
import os
class ZFile(object):
def __init__(self, filename, mode='r', basedir=''):
self.filename = filename
self.mode = mode
if self.mode in ('w', 'a'):
self.zfile = zipfile.ZipFile(filename, self.mode, compression=zipfile.ZIP_DEFLATED)
else:
self.zfile = zipfile.ZipFile(filename, self.mode)
self.basedir = basedir
if not self.basedir:
self.basedir = os.path.dirname(filename)
def addfile(self, path, arcname=None):
path = path.replace('//', '/')
if not arcname:
if path.startswith(self.basedir):
arcname = path[len(self.basedir):]
else:
arcname = ''
self.zfile.write(path, arcname)
def addfiles(self, paths):
for path in paths:
if isinstance(path, tuple):
self.addfile(*path)
else:
self.addfile(path)
def close(self):
self.zfile.close()
def extract_to(self, path):
for p in self.zfile.namelist():
self.extract(p, path)
def extract(self, filename, path):
if not filename.endswith('/'):
f = os.path.join(path, filename)
dir = os.path.dirname(f)
if not os.path.exists(dir):
os.makedirs(dir)
file(f, 'wb').write(self.zfile.read(filename))
def create(zfile, files):
z = ZFile(zfile, 'w')
z.addfiles(files)
z.close()
def extract(zfile, path):
z = ZFile(zfile)
z.extract_to(path)
z.close()
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
# Python
# 压缩
# 解压缩
# ZIP文件
# 使用Python读写及压缩和解压缩文件的示例
# Python实现压缩文件夹与解压缩zip文件的方法
# python下解压缩zip文件并删除文件的实例
# 使用Python压缩和解压缩zip文件的教程
# 详解Python 解压缩文件
# 基于Python实现文件的压缩与解压缩
# Python脚本破解压缩文件口令实例教程(zipfile)
# python解压缩文件或文件夹两种常见方式(附代码)
# 第一个
# 第二个
# 操作技巧
# 进阶
# 是在
# 让你
# 相关内容
# 还可以
# 而在
# 开了
# 右键
# 把它
# 感兴趣
# 数据结构
# 给大家
# 很简单
# 如果没有
# 这种情况
# 它可以
# 写到
相关文章:
太原网站制作公司有哪些,网约车营运证查询官网?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
建站之星价格显示格式升级,你的预算足够吗?
建站之星安装失败:服务器环境不兼容?
专业商城网站制作公司有哪些,pi商城官网是哪个?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
,在苏州找工作,上哪个网站比较好?
建站之星如何优化SEO以实现高效排名?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
实现虚拟支付需哪些建站技术支撑?
详解jQuery停止动画——stop()方法的使用
海南网站制作公司有哪些,海口网是哪家的?
建站之星好吗?新手能否轻松上手建站?
宝塔新建站点为何无法访问?如何排查?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
网站设计制作企业有哪些,抖音官网主页怎么设置?
微信小程序 input输入框控件详解及实例(多种示例)
建站之星ASP如何实现CMS高效搭建与安全管理?
如何快速搭建高效WAP手机网站?
Bpmn 2.0的XML文件怎么画流程图
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何在服务器上配置二级域名建站?
如何零成本快速生成个人自助网站?
如何快速搭建FTP站点实现文件共享?
建站主机类型有哪些?如何正确选型
如何通过建站之星自助学习解决操作问题?
建站ABC备案流程中有哪些关键注意事项?
北京专业网站制作设计师招聘,北京白云观官方网站?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
如何挑选优质建站一级代理提升网站排名?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
如何在Tomcat中配置并部署网站项目?
临沂网站制作公司有哪些,临沂第四中学官网?
建站之星安装后如何配置SEO及设计样式?
C++如何使用std::optional?(处理可选值)
如何选择服务器才能高效搭建专属网站?
如何在景安云服务器上绑定域名并配置虚拟主机?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
建站之星代理如何获取技术支持?
已有域名和空间如何快速搭建网站?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
为什么Go需要go mod文件_Go go mod文件作用说明
全景视频制作网站有哪些,全景图怎么做成网页?
如何解决ASP生成WAP建站中文乱码问题?
*请认真填写需求信息,我们会在24小时内与您取得联系。