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


Posted in Python onMay 06, 2015

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 相关文章推荐
Python内置函数dir详解
Apr 14 Python
python追加元素到列表的方法
Jul 28 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
Flask框架Flask-Login用法分析
Jul 23 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
Python单元和文档测试实例详解
Apr 11 Python
Python3 翻转二叉树的实现
Sep 30 Python
opencv3/python 鼠标响应操作详解
Dec 11 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
Apr 28 Python
python中np是做什么的
Jul 21 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 Python
python如何正确使用yield
May 21 Python
Python发送以整个文件夹的内容为附件的邮件的教程
May 06 #Python
在Linux中通过Python脚本访问mdb数据库的方法
May 06 #Python
python中黄金分割法实现方法
May 06 #Python
使用rpclib进行Python网络编程时的注释问题
May 06 #Python
pymongo给mongodb创建索引的简单实现方法
May 06 #Python
Python中用PIL库批量给图片加上序号的教程
May 06 #Python
python写入中英文字符串到文件的方法
May 06 #Python
You might like
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
数据库中排序的对比及使用条件详解
2012/02/23 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
2017/11/07 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
基于jquery的滚动新闻列表
2010/06/19 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
js实现烟花特效
2020/03/02 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
Django中几种重定向方法
2015/04/28 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
简单的python后台管理程序
2017/04/13 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
Python的垃圾回收机制详解
2019/08/28 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
信息学院毕业生自荐信范文
2014/03/04 职场文书
德语专业求职信
2014/03/12 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server