使用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>


相关文章

  • 给Python中的MySQLdb模块添加超时功能的教程

    给Python中的MySQLdb模块添加超时功能的教程

    这篇文章主要介绍了给Python中的MySQLdb模块添加超时功能的教程,timeout功能在服务器的运维当中非常有用,需要的朋友可以参考下
    2015-05-05
  • 简单的连接MySQL与Python的Bottle框架的方法

    简单的连接MySQL与Python的Bottle框架的方法

    这篇文章主要介绍了简单的连接MySQL与Python的Bottle框架的方法,主要基于mysql-connector插件,需要的朋友可以参考下
    2015-04-04
  • Python实现的多线程http压力测试代码

    Python实现的多线程http压力测试代码

    这篇文章主要介绍了Python实现的多线程http压力测试代码,结合实例形式分析了Python多线程操作的相关实现技巧,需要的朋友可以参考下
    2017-02-02
  • python subprocess.run()、subprocess.Popen()、subprocess.check_output()

    python subprocess.run()、subprocess.Popen()、subprocess.check

    Python的subprocess模块是用于创建和管理子进程的模块,本文主要介绍了python subprocess.run()、subprocess.Popen()、subprocess.check_output(),具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • python实现密码验证合格程序的思路详解

    python实现密码验证合格程序的思路详解

    这篇文章主要介绍了python实现密码验证合格程序的思路详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • python实现textrank关键词提取

    python实现textrank关键词提取

    这篇文章主要为大家详细介绍了python实现textrank关键词提取,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Python文件时间操作步骤代码详解

    Python文件时间操作步骤代码详解

    这篇文章主要介绍了Python文件时间操作步骤代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • python读取txt文件,去掉空格计算每行长度的方法

    python读取txt文件,去掉空格计算每行长度的方法

    今天小编就为大家分享一篇python读取txt文件,去掉空格计算每行长度的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • PyCharm出现Error:Python packaging tool 'setuptools' not found解决办法

    PyCharm出现Error:Python packaging tool 'setuptools&apo

    这篇文章主要给大家介绍了关于PyCharm出现Error:Python packaging tool 'setuptools' not found的解决办法,文中通过图文及代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Python中第三方库Requests库的高级用法详解

    Python中第三方库Requests库的高级用法详解

    虽然Python的标准库中urllib2模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人实在感觉不好。它已经不适合现在的时代,不适合现代的互联网了。而Requests的诞生让我们有了更好的选择。本文就介绍了Python中第三方库Requests库的高级用法。
    2017-03-03

最新评论