全网整合营销服务商

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

免费咨询热线: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解压缩文件或文件夹两种常见方式(附代码)  # 第一个  # 第二个  # 操作技巧  # 进阶  # 是在  # 让你  # 相关内容  # 还可以  # 而在  # 开了  # 右键  # 把它  # 感兴趣  # 数据结构  # 给大家  # 很简单  # 如果没有  # 这种情况  # 它可以  # 写到 


相关文章: 太原网站制作公司有哪些,网约车营运证查询官网?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  建站之星价格显示格式升级,你的预算足够吗?  建站之星安装失败:服务器环境不兼容?  专业商城网站制作公司有哪些,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小时内与您取得联系。