使用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 20 Python
python获取指定时间差的时间实例详解
Apr 11 Python
Python代码实现KNN算法
Dec 20 Python
DataFrame中的object转换成float的方法
Apr 10 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
python 实现检验33品种数据是否是正态分布
Dec 09 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
Python random模块的使用示例
Oct 10 Python
Python一行代码实现自动发邮件功能
May 30 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
Apr 07 Python
使用Django框架创建项目
Jun 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作的文本留言本的例子(六)
2006/10/09 PHP
用php过滤危险html代码的函数
2008/07/22 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
利用php输出不同的心形图案
2016/04/22 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
使用Python抓取模板之家的CSS模板
2015/03/16 Python
python实现猜数字小游戏
2020/03/24 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
高二历史教学反思
2014/01/25 职场文书
应届毕业生自荐信
2015/03/04 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
社会实践心得体会范文
2016/01/14 职场文书
python 爬取华为应用市场评论
2021/05/29 Python