全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python实现压缩和解压缩ZIP文件的方法分析

本文实例讲述了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小时内与您取得联系。