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. JavaScript 词法 All In One

    JavaScript 词法 All In One JavaScript 词法 这部分描述了JavaScript 的词法(lexical grammar). ECMAScript 源码文本会被从左到右扫 ...

  2. short URL 短网址实现原理剖析

    short URL 短网址实现原理剖析 意义,简短便于分享,避免出现超长 URL 的字符长度限制问题 原理分析, 使用 HashMap 存储对应的映射关系 (长度不超过7的字符串,由大小写字母加数字共 ...

  3. github & webhooks

    github & webhooks git auto commit bash shell script https://developer.github.com/webhooks/ POST ...

  4. eyes protect app

    eyes protect app https://awaremac.com/

  5. windows10 安装NASM

    NASM官网 下载NASM NASM在线HTML文档 下载golink golink文档 NASM教程 in windows x64调用约定 x86调用约定 编码样式约定 在编写nasm时数字默认为1 ...

  6. vue动态添加当前事件下的class

    html部分<div class="star"> <span v-for="(item,index) in 5" @click="c ...

  7. NGK项目为什么要发币

    每个区块链创新应用的出现,基本都发行了自己的数字货币,像比特币,以太坊等.数字货币是区块链的资产,是区块链技术的一个应用,实现了用区块链传递价值的目的.目前市面上的数字货币林林总总几千种,其中公链发行 ...

  8. 人物传记JULLIAN MURPHY:投资哪家强,区块链必然>股票+房地产

    今年上半年在金融股市出现巨大波动的时候,星盟的项目审核经理JULLIAN MURPHY发现了一个有趣的现象:各种熔断和暴跌的背后,特斯拉的股票却从去年年末开始至今已经暴涨了12倍,即便中途有所回落,但 ...

  9. 在gradle中构建java项目

    目录 简介 构建java项目的两大插件 管理依赖 编译代码 管理resource 打包和发布 生成javadoc 简介 之前的文章我们讲到了gradle的基本使用,使用gradle的最终目的就是为了构 ...

  10. java: 类 RegisterController 是公共的, 应在名为 RegisterController.java 的文

    public声明的类名需要和文件名一致,检查一下