使用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中cPickle用法例子分享
Jan 03 Python
Python脚本实现虾米网签到功能
Apr 12 Python
Python字符串处理实例详解
May 18 Python
Android分包MultiDex策略详解
Oct 30 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
python中如何使用分步式进程计算详解
Mar 22 Python
Django上使用数据可视化利器Bokeh解析
Jul 31 Python
Python socket聊天脚本代码实例
Jan 02 Python
Python requests模块cookie实例解析
Apr 14 Python
Python数据模型与Python对象模型的相关总结
Jan 26 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 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
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
JQuery 风格的HTML文本转义
2009/07/01 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
jquery 批量上传图片实现代码
2010/01/28 Javascript
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
人事部主管岗位职责
2013/12/26 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
干部现实表现材料
2014/02/13 职场文书
活动总结报告怎么写
2014/07/03 职场文书
违纪学生保证书
2015/02/27 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书