gzip模块能够直接压缩和解压缩bytes-like类型的数据,同时也能实现对应格式文件的压缩与解压缩

一、数据压缩与解压缩

  • 压缩

    • 函数-gzip.compress(data, compresslevel=_COMPRESS_LEVEL_BEST, mtime=None)

      • data:需要压缩的bytes-like类型数据
      • compresslevel参数:可选,用数字0-9表示压缩级别,默认最高压缩级别9,0表示不压缩
  • 解压缩

    • 函数-gzip.decompress(data)

  • 示例:

    import gzip
    
    test_data = b'gzip test data'
    gzip_data = gzip.compress(test_data) # 压缩数据
    ungz_data = gzip.decompress(gzip_data) #解压缩数据
    print(gzip_data) #输出b'\x1f\x8b\x08\x00\xddOa`\x02\xffK\xaf\xca,P(I-.QHI,I\x04\x00*\xfb\x85\x89\x0e\x00\x00\x00'
    print(ungz_data) #输出b'gzip test data',和test_data一致

二、文件压缩与解压缩

  • 使用函数-gzip.open( filename, mode="rb", compresslevel=_COMPRESS_LEVEL_BEST, encoding=None, errors=None, newline=None)

    • 压缩文件打开后,拥有普通文件对象一样的方法,如read、readline、readlines、write、writelines等。
    • 读取内容,可以获得解压缩后的数据
    • 写入内容,能够完成对数据的压缩
  • 使用类-gzip.GzipFile()

    • 初始化对象的方法__init__:(self, filename=None, mode=None,compresslevel=_COMPRESS_LEVEL_BEST, fileobj=None, mtime=None)
    • 用法与gzip.open()类似,可传入文件名或文件对象
  • 示例:

    #coding=utf-8
    import gzip def gz(filename):
    '''压缩文件''' gz_filename = filename + '.tgz' #压缩后文件名
    f_ungz = open(filename,'rb') # 打开未压缩文件对象
    f_gz = gzip.open(gz_filename,'wb') # 使用open函数创建压缩文件对象
    # f_gz = gzip.GzipFile(gz_filename,'wb') 使用GzipFile类创建压缩文件对象
    f_gz.writelines(f_ungz) #写入压缩内容
    f_ungz.close()
    f_gz.close() def ungz(gz_filename):
    '''解压缩文件''' ungz_filename = gz_filename.replace('.tgz','').replace('.tar.gz','')# 解压缩后文件名
    f_gz = gzip.GzipFile(gz_filename)#使用GzipFile类创建压缩文件对象
    # f_gz = gzip.open(gz_filename) 使用open函数打开压缩文件对象
    f_ungz = open(ungz_filename,'wb') #新建未压缩文件对象
    f_ungz.writelines(f_gz) #写入解压缩后的文件内容
    f_ungz.close()
    f_gz.close()

python中gzip模块的使用的更多相关文章

  1. Python中optionParser模块的使用方法[转]

    本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...

  2. python中threading模块详解(一)

    python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...

  3. 【转】关于python中re模块split方法的使用

    注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...

  4. Python中的模块介绍和使用

    在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一 ...

  5. python中导入模块的本质, 无法导入手写模块的解决办法

    最近身边一些朋友发生在项目当中编写自己模块,导入的时候无法导入的问题. 下面我来分享一下关于python中导入模块的一些基本知识. 1 导入模块时寻找路径 在每一个运行的python程序当中,都维护了 ...

  6. Python中time模块详解

    Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...

  7. Python中collections模块

    目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque ChainMap Python中collections ...

  8. Python中pathlib模块

    Python中pathlib模块 Path.cwd():返回当前目录的路径 Path.home():返回当前用户的家目录 Path.stat():返回此路径信息 Path.touch():创建文件 P ...

  9. Python 中包/模块的 `import` 操作

    版权声明:博客为作者原创,允许转载,但必须注明原文地址: https://www.cnblogs.com/byronxie/p/10745292.html 用实例来说明 import 的作用吧. 创建 ...

随机推荐

  1. involution 内卷化

    involution 内卷化 虽然不熟悉 involution,但是我想起另外两个常用词:evolution(进化)和 revolution(革命). 它们共同的词根volute,拉丁语原意是&quo ...

  2. Android 开启 WebView 页面 Chrome debug

    Android 开启 WebView 页面 Chrome debug WebView debug // 开启 WebView 页面 debug testWebView.setWebContentsDe ...

  3. 中英文混排网站排版指南 All In One

    中英文混排网站排版指南 All In One 排版 数字与单位 正确 5G 的下载速度可以达到 1Gbps,4G 为100Mbps 1Gbps === 1000Mbps 错误 5G的下载速度可以达到1 ...

  4. Taro 框架实现原理

    Taro 框架实现原理 小程序 H5 RN Web 多端框架 Taro 1.x & Taro 2.x 编译型架构, 语法编译转换 Taro 1/2 属于编译型架构,主要通过对类 React 代 ...

  5. npm & config settings

    npm & config settings how to check npm config settings https://docs.npmjs.com/cli/config $ npm c ...

  6. project generators & project scaffold

    project generators & project scaffold how to write a node cli & Project Scaffold https://www ...

  7. ng 设置动态的document title

    使用Title服务 相关文章 配置路由, 添加data.title参数 import { NgModule } from '@angular/core'; import { RouterModule, ...

  8. .NET微服务最佳实践 eShopOnContainers

    本文翻译自微软Docs, 内嵌译者多年使用的参悟,如理解有误,请不吝赐教. 微软与社区专家合作,开发了功能齐全的云原生微服务示例应用eShopOnContainers. 该应用旨在展示使用.NET.D ...

  9. 构建Docker私有仓库

    一.Docker私有仓库   上一篇说了如何利用Dockerfile在已有镜像的基础上构建自己的镜像,那么如果需要让镜像在一个团队中使用,就需要一个仓库,有几种方式可以共享私有镜像. 1.将镜像上传至 ...

  10. JS中indexOf的用法

    String.IndexOf(Char, [startIndex], [count]):返回指定字符在原字符串中的第一个匹配项的索引.可指定字符开始检索位置和指定长度的字符,若没有找到该字符,则返回 ...