使用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 3中实现类型检查器的简单方法
Jul 03 Python
Python科学计算之NumPy入门教程
Jan 15 Python
详解python eval函数的妙用
Nov 16 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
python如何查看微信消息撤回
Nov 27 Python
python 如何去除字符串头尾的多余符号
Nov 19 Python
python 消费 kafka 数据教程
Dec 21 Python
在TensorFlow中屏蔽warning的方式
Feb 04 Python
python实现logistic分类算法代码
Feb 28 Python
如何利用python正则表达式匹配版本信息
Dec 09 Python
python 利用jieba.analyse进行 关键词提取
Dec 17 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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函数
2006/10/09 PHP
用PHP函数解决SQL injection
2006/12/09 PHP
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
计算一段日期内的周末天数的php代码(星期六,星期日总和)
2009/11/12 PHP
php缓冲 output_buffering的使用详解
2013/06/13 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
JavaScript 对象模型 执行模型
2009/12/06 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
jQuery操作cookie
2016/08/08 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
Python 使用type来定义类的实现
2019/11/19 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
python Tensor和Array对比分析
2020/01/08 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
草莓网化妆品加拿大网站:Strawberrynet Canada
2016/09/20 全球购物
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
拾金不昧的表扬信
2014/01/16 职场文书
大二学习计划书范文
2014/04/27 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
外国人来华邀请函
2015/01/31 职场文书
法定授权委托证明书
2015/06/18 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
MySQL导致索引失效的几种情况
2022/06/25 MySQL