使用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使用urllib模块和pyquery实现阿里巴巴排名查询
Jan 16 Python
从Python的源码浅要剖析Python的内存管理
Apr 16 Python
Python实现图像几何变换
Jul 06 Python
Python中的urllib模块使用详解
Jul 07 Python
Python 爬虫模拟登陆知乎
Sep 23 Python
python安装oracle扩展及数据库连接方法
Feb 21 Python
python实现决策树分类
Aug 30 Python
python将字符串以utf-8格式保存在txt文件中的方法
Oct 30 Python
python读写配置文件操作示例
Jul 03 Python
python原类、类的创建过程与方法详解
Jul 19 Python
python无序链表删除重复项的方法
Jan 17 Python
python实现xml转json文件的示例代码
Dec 30 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
PHP中用正则表达式清除字符串的空白
2011/01/17 PHP
php短域名转换为实际域名函数
2011/01/17 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
Js 中debug方式
2010/02/07 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
Css3制作变形与动画效果
2015/07/24 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
Vue学习之常用指令实例详解
2020/01/06 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
用Python输出一个杨辉三角的例子
2014/06/13 Python
深入理解python try异常处理机制
2016/06/01 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
Python 获取div标签中的文字实例
2018/12/20 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
财务部出纳岗位职责
2013/12/22 职场文书
家具厂厂长岗位职责
2014/01/01 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
高中学校对照检查材料
2014/08/31 职场文书
销售经理岗位职责范本
2015/04/02 职场文书
校长一岗双责责任书
2015/05/09 职场文书
寻找成龙观后感
2015/06/12 职场文书
运动会广播稿100字
2015/08/19 职场文书
vue elementUI表格控制对应列
2022/04/13 Vue.js
原生JS实现分页
2022/04/19 Javascript