Python实现压缩与解压gzip大文件的方法


Posted in Python onSeptember 18, 2016

本文实例讲述了Python实现压缩与解压gzip大文件的方法。分享给大家供大家参考,具体如下:

#encoding=utf-8
#author: walker
#date: 2015-10-26
#summary: 测试gzip压缩/解压文件
import gzip
BufSize = 1024*8
def gZipFile(src, dst):
  fin = open(src, 'rb')
  fout = gzip.open(dst, 'wb')
  in2out(fin, fout)
def gunZipFile(gzFile, dst):
  fin = gzip.open(gzFile, 'rb')
  fout = open(dst, 'wb')
  in2out(fin, fout)
def in2out(fin, fout):
  while True:
    buf = fin.read(BufSize)
    if len(buf) < 1:
      break
    fout.write(buf)
  fin.close()
  fout.close()
if __name__ == '__main__':
  src = r'D:\tmp\src.txt'
  dst = r'D:\tmp\src.txt.gz'
  ori = r'D:\tmp\ori.txt'
  gZipFile(src, dst)
  print('gZipFile over!')
  gunZipFile(dst, ori)
  print('gunZipFile over!')

也可以简单地封装成一个类:

class GZipTool:
  def __init__(self, bufSize):
    self.bufSize = bufSize
    self.fin = None
    self.fout = None
  def compress(self, src, dst):
    self.fin = open(src, 'rb')
    self.fout = gzip.open(dst, 'wb')
    self.__in2out()
  def decompress(self, gzFile, dst):
    self.fin = gzip.open(gzFile, 'rb')
    self.fout = open(dst, 'wb')
    self.__in2out()
  def __in2out(self,):
    while True:
      buf = self.fin.read(self.bufSize)
      if len(buf) < 1:
        break
      self.fout.write(buf)
    self.fin.close()
    self.fout.close()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python 解析XML文件
Apr 15 Python
Django的session中对于用户验证的支持
Jul 23 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
python实现最长公共子序列
May 22 Python
python让列表倒序输出的实例
Jun 25 Python
Python3转换html到pdf的不同解决方案
Mar 11 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
Pandas数据离散化原理及实例解析
Nov 16 Python
简单了解python装饰器原理及使用方法
Dec 18 Python
基于python和flask实现http接口过程解析
Jun 15 Python
python用分数表示矩阵的方法实例
Jan 11 Python
浅析Python实现DFA算法
Jun 26 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 #Python
Python简单格式化时间的方法【strftime函数】
Sep 18 #Python
Python简单获取自身外网IP的方法
Sep 18 #Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 #Python
Python3实现并发检验代理池地址的方法
Sep 18 #Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 #Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
Sep 18 #Python
You might like
php数组使用规则分析
2015/02/27 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
javascript的键盘控制事件说明
2008/04/15 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
浅谈JavaScript中的apply/call/bind和this的使用
2017/02/26 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
浅谈微信小程序flex布局基础
2018/09/10 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
Python中协程用法代码详解
2018/02/10 Python
python 统计列表中不同元素的数量方法
2018/06/29 Python
python3调用windows dos命令的例子
2019/08/14 Python
python 动态调用函数实例解析
2019/10/21 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
高一自我鉴定
2013/12/17 职场文书
简历里的自我评价
2014/01/31 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS