使用Python压缩和解压缩zip文件的教程

 更新时间:2015年05月06日 11:40:29   投稿:goldensun  
这篇文章主要介绍了使用Python压缩和解压缩zip文件的教程,主要用到了zipfile包,需要的朋友可以参考下

python 的 zipfile 提供了非常便捷的方法来压缩和解压 zip 文件。

例如,在py脚本所在目录中,有如下文件:

复制代码 代码如下:
readability/readability.js
readability/readability.txt
readability/readability-print.css
readability/sprite-readability.png
readability/readability.css

将 readability 目录中的文件压缩到脚本所在目录的 readability.zip 文件中,保持相同的文件结构,然后打印出生成的压缩包 的文件列表,再用两种方式分别解压文件到脚本所在目录的 output 目录和 output/bak 目录中。

脚本如下:

#!/usr/vin/env python
# coding: utf-8
"""
压缩和解压zip文件
"""

import os
import zipfile

def compress(zip_file, input_dir):
  f_zip = zipfile.ZipFile(zip_file, 'w')
  for root, dirs, files in os.walk(input_dir):
    for f in files:
      # 获取文件相对路径,在压缩包内建立相同的目录结构
      abs_path = os.path.join(os.path.join(root, f))
      rel_path = os.path.relpath(abs_path, os.path.dirname(input_dir))
      f_zip.write(abs_path, rel_path, zipfile.ZIP_STORED)

def extract(zip_file, output_dir):
  f_zip = zipfile.ZipFile(zip_file, 'r')

  # 解压所有文件到指定目录
  f_zip.extractall(output_dir)

  # 逐个解压文件到指定目录
  for f in f_zip.namelist():
    f_zip.extract(f, os.path.join(output_dir, 'bak'))

def printdir(zip_file):
  f_zip = zipfile.ZipFile(zip_file, 'r')
  print '== printdir() ============================'
  f_zip.printdir()
  print
  print '== namelist() ============================'
  for f in f_zip.namelist():
    print f

if __name__ == '__main__':
  zip_file = 'readability.zip'
  compress(zip_file, os.path.join(os.getcwd(), 'readability'))
  printdirzip_file)
  extract(zip_file, 'output')</pre>


相关文章

  • python3 http.client 网络请求方式

    python3 http.client 网络请求方式

    这篇文章主要介绍了python3 http.client 网络请求方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 解决Keyerror ''''acc'''' KeyError: ''''val_acc''''问题

    解决Keyerror ''''acc'''' KeyError: ''''val_acc''''问题

    这篇文章主要介绍了解决Keyerror 'acc' KeyError: 'val_acc'问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python微元法计算函数曲线长度的方法

    python微元法计算函数曲线长度的方法

    今天小编就为大家分享一篇python微元法计算函数曲线长度的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python图像处理库PIL详细使用说明

    Python图像处理库PIL详细使用说明

    Pillow是Python中较为基础的图像处理库,主要用于图像的基本处理,比如裁剪图像、调整图像大小和图像颜色处理等,需要的朋友可以参考下
    2022-04-04
  • protobuf 序列化和反序列化操作流程

    protobuf 序列化和反序列化操作流程

    Protocol Buffers(protobuf)是一种轻量级的数据交换格式,可以用于结构化数据的序列化和反序列化,它使用二进制格式来编码数据,以提高传输效率和数据压缩比,这篇文章主要介绍了protobuf 序列化和反序列化操作流程,需要的朋友可以参考下
    2024-06-06
  • python实现随机森林random forest的原理及方法

    python实现随机森林random forest的原理及方法

    本篇文章主要介绍了python实现随机森林random forest的原理及方法,详细的介绍了随机森林的原理和python实现,非常具有参考价值,有兴趣的可以了解一下
    2017-12-12
  • Python基于mediainfo批量重命名图片文件

    Python基于mediainfo批量重命名图片文件

    这篇文章主要介绍了Python基于mediainfo批量重命名图片文件的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • Python多层嵌套list的递归处理方法(推荐)

    Python多层嵌套list的递归处理方法(推荐)

    下面小编就为大家带来一篇Python多层嵌套list的递归处理方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • PyQt中实现自定义工具提示ToolTip的方法详解

    PyQt中实现自定义工具提示ToolTip的方法详解

    这篇文章主要为大家详细介绍了PyQt中实现自定义工具提示ToolTip的方法详解,文中的示例代码讲解详细,对我们学习有一定帮助,需要的可以参考一下
    2022-05-05
  • 浅谈keras 模型用于预测时的注意事项

    浅谈keras 模型用于预测时的注意事项

    这篇文章主要介绍了浅谈keras 模型用于预测时的注意事项,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06

最新评论