使用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获取android设备的GPS信息脚本分享
Mar 06 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
python:socket传输大文件示例
Jan 18 Python
Python算法应用实战之栈详解
Feb 04 Python
Python实现的随机森林算法与简单总结
Jan 30 Python
python正则表达式爬取猫眼电影top100
Feb 24 Python
python监控文件并且发送告警邮件
Jun 21 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
PyQt5+requests实现车票查询工具
Jan 21 Python
django 框架实现的用户注册、登录、退出功能示例
Nov 28 Python
python和JavaScript哪个容易上手
Jun 23 Python
如何更换python默认编辑器的背景色
Aug 10 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 iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
MySQL连接数超过限制的解决方法
2011/07/17 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
JavaScript关于select的相关操作说明
2010/01/13 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
快速入门Vue
2016/12/19 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python自动化测试之连接几组测试包实例
2014/09/28 Python
Python中运行并行任务技巧
2015/02/26 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
在django view中给form传入参数的例子
2019/07/19 Python
pandas的排序和排名的具体使用
2019/07/31 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
人力资源部门的主要职能
2014/02/22 职场文书
总经理的岗位职责
2014/02/23 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
小学感恩节活动总结
2015/03/24 职场文书
党支部半年考察意见
2015/06/01 职场文书
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android