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基础之字符编码
Jun 14 Python
python selenium 获取标签的属性值、内容、状态方法
Jun 22 Python
win10下python3.5.2和tensorflow安装环境搭建教程
Sep 19 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
Python下划线5种含义代码实例解析
Jul 10 Python
QT5 Designer 打不开的问题及解决方法
Aug 20 Python
matplotlib bar()实现百分比堆积柱状图
Feb 24 Python
Python下opencv使用hough变换检测直线与圆
Jun 18 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的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
javascript定时器完整实例
2015/02/10 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
SQLite3中文编码 Python的实现
2017/01/11 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
初中校园之声广播稿
2014/01/15 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
文明单位创建材料
2014/12/24 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
《确定位置》教学反思
2016/02/18 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js