码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-05-13 02:53:51      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

本模块主要提供了对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  深圳

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

标签:

原文地址:http://blog.csdn.net/caimouse/article/details/51339715

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!