这个模块提供了一些简单的接口来对文件进行压缩和解压缩
类似于GNU项目的gzip和gunzip,数据的压缩源于zlib模块的支持。
gzip.open(filename, mode='rb', compresslevel=9, encoding=None, errors=None, newline=None)
打开一个gzip已经压缩好的gzip格式的文件,并返回一个文件对象:file object.
参数filename可以是真是的文件名(a str or bytes对象),或着是已经存在的读写文件对象。
参数mode在操作二进制的时候使用:'r','rb','a','ab','wb'
操作text的时候使用:'rt,'at','wt'
默认是:'rb'
参数compresslevel是0-9的数值
如何读取压缩文件
import gzip
with gzip.open('/home/joe/file.txt.gz', 'rb') as f:
file_content = f.read()
如何创建一个gzip文件
import gzip
content = b"Lots of content here"
with gzip.open('/home/joe/file.txt.gz', 'wb') as f:
f.write(content)
如何gzip一个已存在的文件(把已有文件转换成gzip格式)
import gzip
import shutil
with open('/home/joe/file.txt', 'rb') as f_in:
with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
如何gzip压缩一个二进制字符
import gzip
s_in = b"Lots of content here"
s_out = gzip.compress(s_in)
使用gzip模块压缩文件
>>> import gzip #导入python gzip模块,注意名字为全小>>> g = gzip.GzipFile(filename="", mode="wb", compresslevel=9, fileobj=open('sitemap.log.gz', 'wb'))
>>> g.write(open('d:\\test\\sitemap.xml').read())
>>> g.close()
其中,filename参数是压缩文件内,文件的名字,为空也可以,不修改
fileobj是生成的压缩文件对象,它的路径名称等。
最后是把文件写入gzip文件中去,再关闭操作连接。
filename = 'd:........' whatever ,例如:'d:\\test\\sitemap.log.gz'
使用gzip模块解压缩文件
>>> g = gzip.GzipFile(mode="rb", fileobj=open('d:\\test\\sitemap.log.gz', 'rb')) # python gzip 解压
>>> open(r"d:\\haha.xml", "wb").write(g.read())
使用的时候注意,函数方法的大小写一点要看仔细
如果gzip文件是这种形式的:*.tar.gz,证明先是由tar命令压缩后
后再由 gzip压缩的需要先用解压缩tar文件,再用gzip模块解压缩
其实,现在很多网页为了提高浏览器端用户的访问速度,和搜索引擎爬虫抓取的速度,都在使用gzip压缩。
os模块看
这里