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 相关文章推荐
浅谈终端直接执行py文件,不需要python命令
Jan 23 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
利用python实现xml与数据库读取转换的方法
Jun 17 Python
Python 实现字符串中指定位置插入一个字符
May 02 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
Python中psutil的介绍与用法
May 02 Python
Python常用模块之requests模块用法分析
May 15 Python
tensorflow保持每次训练结果一致的简单实现
Feb 17 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 Python
python re的findall和finditer的区别详解
Nov 15 Python
Python实现王者荣耀自动刷金币的完整步骤
Jan 22 Python
python数字图像处理实现图像的形变与缩放
Jun 28 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
人大复印资料处理程序_输入篇
2006/10/09 PHP
PHP 处理图片的类实现代码
2009/10/23 PHP
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
微信小程序 地图定位简单实例
2016/10/14 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
js实现简单的无缝轮播效果
2020/09/05 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
详解Python的Django框架中的中间件
2015/07/24 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
详解python中的模块及包导入
2019/08/30 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
优秀学生获奖感言
2014/02/15 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
网络管理员岗位职责
2015/02/12 职场文书