使用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 30 Python
编写Python CGI脚本的教程
Jun 29 Python
Python用threading实现多线程详解
Feb 03 Python
Python实现的HMacMD5加密算法示例
Apr 03 Python
从DataFrame中提取出Series或DataFrame对象的方法
Nov 10 Python
深入理解Python异常处理的哲学
Feb 01 Python
详解Python中的正斜杠与反斜杠
Aug 09 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
pandas to_excel 添加颜色操作
Jul 14 Python
解决Django响应JsonResponse返回json格式数据报错问题
Aug 09 Python
Django如何实现密码错误报错提醒
Sep 04 Python
详解运行Python的神器Jupyter Notebook
Jun 03 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函数的方法
2013/11/13 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
Python二叉搜索树与双向链表转换实现方法
2016/04/29 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
python读取指定字节长度的文本方法
2019/08/27 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
Python使用xpath实现图片爬取
2020/09/16 Python
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
小学门卫岗位职责
2013/12/17 职场文书
大学四年职业生涯规划书范文
2014/01/02 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
学校交通安全责任书
2014/08/25 职场文书
授权委托书协议书
2014/10/16 职场文书
个人专业技术总结
2015/03/05 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
工程款申请报告
2015/05/15 职场文书
2016年国陪研修感言
2015/11/18 职场文书
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS