本文实例讲述了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解压缩文件或文件夹两种常见方式(附代码)
# 第一个
# 第二个
# 操作技巧
# 进阶
# 是在
# 让你
# 相关内容
# 还可以
# 而在
# 开了
# 右键
# 把它
# 感兴趣
# 数据结构
# 给大家
# 很简单
# 如果没有
# 这种情况
# 它可以
# 写到
相关文章:
如何设计高效校园网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
如何在景安云服务器上绑定域名并配置虚拟主机?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何快速搭建自助建站会员专属系统?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
网站制作说明怎么写,简述网页设计的流程并说明原因?
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
如何选择网络建站服务器?高效建站必看指南
宁波自助建站系统如何快速打造专业企业网站?
如何选择适合PHP云建站的开源框架?
行程制作网站有哪些,第三方机票电子行程单怎么开?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
深圳网站制作的公司有哪些,dido官方网站?
如何配置IIS站点权限与局域网访问?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
宿州网站制作公司兴策,安徽省低保查询网站?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
建站之星如何实现PC+手机+微信网站五合一建站?
如何在云主机上快速搭建多站点网站?
建站主机与虚拟主机有何区别?如何选择最优方案?
如何在七牛云存储上搭建网站并设置自定义域名?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
红河网站制作公司,红河事业单位身份证如何上传?
如何确保西部建站助手FTP传输的安全性?
网页设计与网站制作内容,怎样注册网站?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
简历在线制作网站免费版,如何创建个人简历?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
平台云上自主建站:模板化设计与智能工具打造高效网站
建站上市公司网站建设方案与SEO优化服务定制指南
,制作一个手机app网站要多少钱?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
网站制作公司,橙子建站是合法的吗?
如何配置FTP站点权限与安全设置?
如何选择高效可靠的多用户建站源码资源?
建站主机如何选?性能与价格怎样平衡?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
广平建站公司哪家专业可靠?如何选择?
如何高效利用200m空间完成建站?
盐城做公司网站,江苏电子版退休证办理流程?
济南网站制作的价格,历城一职专官方网站?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
建站之星价格显示格式升级,你的预算足够吗?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
Bpmn 2.0的XML文件怎么画流程图
如何快速搭建安全的FTP站点?
建站之星Pro快速搭建教程:模板选择与功能配置指南
*请认真填写需求信息,我们会在24小时内与您取得联系。