使用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访问纯真IP数据库脚本分享
Jun 29 Python
Python中的列表生成式与生成器学习教程
Mar 13 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
基于Django用户认证系统详解
Feb 21 Python
pandas的object对象转时间对象的方法
Apr 11 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
python的几种矩阵相乘的公式详解
Jul 10 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
Aug 08 Python
python使用Geany编辑器配置方法
Feb 21 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
Feb 23 Python
教你用python控制安卓手机
May 13 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下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
THINKPHP内容分页代码分享
2015/01/14 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
jQuery 页面 Mask实现代码
2010/01/09 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
node上的redis调用优化示例详解
2018/10/30 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
Python常用知识点汇总
2016/05/08 Python
Python 字符串换行的多种方式
2018/09/06 Python
pymongo中group by的操作方法教程
2019/03/22 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
Python阶乘求和的代码详解
2020/02/14 Python
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
物业管理毕业生个人的求职信
2013/11/30 职场文书
关于是否需要写商业计划书
2014/02/07 职场文书
十八届三中全会感言
2014/03/10 职场文书
就业意向书
2014/07/29 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
社区党建工作总结2015
2015/05/13 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书