使用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中的Cookie模块使用
Jul 06 Python
python利用MethodType绑定方法到类示例代码
Aug 27 Python
python编写分类决策树的代码
Dec 21 Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 Python
python让列表倒序输出的实例
Jun 25 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
Python操作Mongodb数据库的方法小结
Sep 10 Python
python 使用事件对象asyncio.Event来同步协程的操作
May 04 Python
Python xlwt模块使用代码实例
Jun 10 Python
python Django框架快速入门教程(后台管理)
Jul 21 Python
python实现Nao机器人的单目测距
Sep 04 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&amp;mysql 日期操作小记
2012/02/27 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
详解JS模块导入导出
2017/12/20 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
python getopt 参数处理小示例
2009/06/09 Python
简单介绍Python中的floor()方法
2015/05/15 Python
深入解析Python中函数的参数与作用域
2016/03/20 Python
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
Python使用gensim计算文档相似性
2016/04/10 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
pycharm显示远程图片的实现
2019/11/04 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
什么是Python中的匿名函数
2020/06/02 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
大学新生军训个人的自我评价
2013/10/03 职场文书
升职自荐书范文
2013/11/28 职场文书
校本教研工作方案
2014/01/14 职场文书
优秀士兵个人事迹材料
2014/01/19 职场文书
大学生个人学习总结
2015/02/15 职场文书
员工离职证明范本
2015/06/12 职场文书
行政复议答复书
2015/07/01 职场文书
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技