热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

10.2gzip--支持操作gzip文件库

本模块主要提供了对gzip文件格式的操作,可以像gzip和gunzip程序一样对文件进行压缩和解压缩的工作。本模块实现的相关功能是基于模块zlib的功能之上进行的。gzip模块提供了一个类Gzi

本模块主要提供了对gzip文件格式的操作,可以像gzipgunzip程序一样对文件进行压缩和解压缩的工作。本模块实现的相关功能是基于模块zlib的功能之上进行的。gzip模块提供了一个类GzipFile,它可以使用的函数有open()compress()decompress()GzipFile类可以读取和写入gzip格式的文件,它会自动地压缩写入的数据和对读取出来的数据进行解压缩,使用起来就像普通的文件对象一样。

 

gzip.open(filename, mode='rb', compresslevel=9, encoding=None, errors=None, newline=None)

打开一个gzip压缩的文件,可以是二进制或文本的方式打开,返回一个文件对象。参数filename是一个新的文件名称,或者一个存在文件进行读写;参数mode是打开文件的方式,可以选择二进制:'r', 'rb', 'a', 'ab', 'w', 'wb', 'x' or 'xb' 或者文本:'rt', 'at', 'wt', or 'xt',默认是rb模式;参数compresslevel09可选,是压缩级别;参数encoding是文本方式时要指明文本采用什么方式进行解析,如果采用二进制方式读写,就不要提供本参数,以及errorsnewline等参数。

 

class gzip.GzipFile(filename=None, mode=None, compresslevel=9, fileobj=None, mtime=None)

GzipFile类的构造函数,它是模拟文件对象的功能。本函数支持文件名称方式读写文件,也支持提供文件对象fileobj方式进行读取文件,两者只能选择中一个使用,不能同时存在。参数mtime是压缩时写入文件流的时间,如果没有提供就会采用当前系统时间。其它参数与上面的函数一样。

 

peek([n])

读取n个未压缩的字节数据,但不移动文件读取位置。

 

gzip.compress(data, compresslevel=9)

压缩数据data,返回包含压缩数据的bytes文件对象。参数compresslevel与前面的构造函数意义是一样。

 

gzip.decompress(data)

解压数据data,返回包括解压数据的bytes文件对象。

 

写入数据的压缩例子:

#python 3.4

import gzip

 

test = b'http://blog.csdn.net/caimouse'

#写入压缩的文件

with gzip.open('file.txt.gz', 'wb') as f:

    f.write(test)

 

#读取压缩的文件

with gzip.open('file.txt.gz', 'rb') as f:

    file = f.read()

    print(file)

结果输出如下:

b'http://blog.csdn.net/caimouse'

 

对已经存在的文件进行压缩例子:

#python 3.4

import gzip

 

#对已经存在的文件进行压缩

with open('difflib12.py', 'rb') as fRead:

    with gzip.open('file.txt.gz', 'wb') as f:

        f.writelines(fRead)

 

#读取压缩的文件

with gzip.open('file.txt.gz', 'rb') as f:

    file = f.read()

    print(file)

结果输出如下:

b"#python3.4.3\r\n\r\nimport difflib\r\n\r\nword = '\xe6\xb7\xb1\xe5\x9c\xb3'\r\nposs = ['\xe6\xb7\xb1\xe5\xb1\xb1\xe9\x87\x8c\xe7\x9a\x84\xe5\x9c\xb3', '\xe6\xb7\xb1\xe5\xb1\xb1\xe9\x87\x8c\xe7\x9a\x84\xe5\x9c\xb32', '\xe6\x9d\xa5\xe8\xbf\x87\xe6\xb7\xb1\xe5\x9c\xb3', '\xe6\x9d\xa5\xe8\xbf\x87\xe5\x9c\xb3\xe6\xb7\xb1']\r\n\r\nprint(word, ':')\r\nfor line in difflib.get_close_matches(word, poss):\r\n    print(line)\r\n\r\nword = '\xe6\xb7\xb1\xe5\x9c\xb32'\r\nprint(word, ':')\r\nfor line in difflib.get_close_matches(word, poss):\r\n    print(line)\r\n"

 

对二进制进行压缩的例子:

#python 3.4

import gzip

 

#对二进制压缩的例子

indata = b'http://blog.csdn.net/caimouse'

outdata = gzip.compress(indata)

print(outdata)

 

txtout = gzip.decompress(outdata)

print(txtout)

结果输出如下:

b'\x1f\x8b\x08\x00\x07{\xc6V\x02\xff\xcb())\xb0\xd2\xd7O\xca\xc9O\xd7K.N\xc9\xd3\xcbK-\xd1ON\xcc\xcc\xcd/-N\x05\x00\xea..\xd7\x1d\x00\x00\x00'

b'http://blog.csdn.net/caimouse'

 


蔡军生   QQ:9073204  深圳


推荐阅读
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 用SpringBoot实现万能文件在线预览
    推荐一个用SpringBoot搭建的文档在线预览解决方案:kkFileView,一款成熟且开源的文件文档在线预览项目解决方案,对标业内付 ... [详细]
  • 1.man(相当于cmd--help)对不熟悉的命令想查询详细使用方法的帮助解释可以使用eg:manls就可以查看ls相关的用法注: ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在Python中使用zlib模块进行字符串的压缩与解压缩的方法,并探讨了其在内存优化方面的应用。通过压缩存储URL等长字符串,可以大大降低内存消耗,虽然处理时间会增加,但是整体效果显著。同时,给出了参考链接,供进一步学习和应用。 ... [详细]
  • 本文介绍了在Linux系统下进行文件压缩与解压的常用命令,包括tar命令的基本使用和参数,以及gzip、bz2、compress、rar和zip等不同格式的压缩与解压方法。同时还提供了常见的压缩文件后缀名及对应的解压命令,方便用户进行文件的压缩和解压操作。 ... [详细]
  • IamgettingaUnicodeerror:UnicodeEncodeError:charmapcodeccantencodecharacteru\xa9in ... [详细]
  • 第一种方法gitarchive-oupdate.zip$(gitdiffnew-versionold-version--name-only)此方法如果文件有删除,则 ... [详细]
  • 开发中,EXT封装的.NET控件,使用了ExtJsExtenderControl的开源控件,发现个问题,就是每次控件加载,都需要调EXT_ALL.JS文件,600K,导致页面加载很慢。想对这个问题进行 ... [详细]
  • Linux操作系统回炉复习各种常用命令集合解析
    Linux操作系统回炉复习各种常用命令集合解析猿码互联猿码互联今天Linux终端命令格式目标了解终端命令格式知道如何查阅终端命令帮助信息01.终端命令格式command[ ... [详细]
  • Createdon2014-2-20author:Vincentimporturllib.parseimportgzipimportjsonimportrefromhtt ... [详细]
  • 传送门上一篇:Day4-前端高频面试题之浏览器相关1、请介绍一下HTTP和HTTPS的区别?HTTPS是在HTTP的基础上加入了SSL协议 ... [详细]
author-avatar
嗯哼
很清新
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有