标签:
本模块主要提供了对gzip文件格式的操作,可以像gzip和gunzip程序一样对文件进行压缩和解压缩的工作。本模块实现的相关功能是基于模块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模式;参数compresslevel是0到9可选,是压缩级别;参数encoding是文本方式时要指明文本采用什么方式进行解析,如果采用二进制方式读写,就不要提供本参数,以及errors和newline等参数。
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 深圳
标签:
原文地址:http://blog.csdn.net/caimouse/article/details/51339715