使用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创建线程示例
May 06 Python
Python实现简单截取中文字符串的方法
Jun 15 Python
Python实现的简单模板引擎功能示例
Sep 02 Python
Django项目中包含多个应用时对url的配置方法
May 30 Python
Centos 升级到python3后pip 无法使用的解决方法
Jun 12 Python
python2.7实现邮件发送功能
Dec 12 Python
python自定义线程池控制线程数量的示例
Feb 22 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 Python
使用python动态生成波形曲线的实现
Dec 04 Python
PyQt5实现登录页面
May 30 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
Jun 18 Python
pyqt5实现井字棋的示例代码
Dec 07 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 日期加减的类,很不错
2009/10/10 PHP
收集的二十一个实用便利的PHP函数代码
2010/04/22 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
网站防止被刷票的一些思路与方法
2015/01/08 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
PHP CURL实现模拟登陆并上传文件操作示例
2020/01/02 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
vue debug 二种方法
2018/09/16 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
python tornado使用流生成图片的例子
2019/11/18 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
英国在线药房:Express Chemist
2019/03/28 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
大学团支书的自我评价分享
2013/12/14 职场文书
法学院方阵解说词
2014/01/29 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
2014年司机工作总结
2014/11/21 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
旅行社计调工作总结
2015/08/12 职场文书