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基于更相减损术实现求解最大公约数的方法
Apr 04 Python
Python 批量合并多个txt文件的实例讲解
May 08 Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
python用TensorFlow做图像识别的实现
Apr 21 Python
详解Python中namedtuple的使用
Apr 27 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
Sep 26 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
Feb 03 Python
Python实现滑雪小游戏
Sep 25 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
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
在模板页面的js使用办法
2010/04/01 Javascript
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
JS实现返回上一页并刷新页面的方法分析
2019/07/16 Javascript
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
儿童学习python的一些小技巧
2018/05/27 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
八一慰问活动方案
2014/02/07 职场文书
公司接待方案
2014/03/08 职场文书
yy生日主持词
2014/03/20 职场文书
家长寄语大全
2014/04/02 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
2014年幼儿园园务工作总结
2014/12/05 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技
关于vue-router-link选择样式设置
2022/04/30 Vue.js