全部博文(2065)
分类: Python/Ruby
2010-04-21 21:31:32
python中的gzip模块
class GzipFile( |
[filename[, mode[,
compresslevel[, fileobj]]]]) |
调用示例:
g = gzip.GzipFile(filename='', mode='wb', compresslevel=9, fileobj=open(r'r:\test.log.gz','wb'))
调用示例:
import gzip
g = gzip.GzipFile(filename='', mode='wb',
compresslevel=9, fileobj=open(r'E:\test.log.gz','wb'))
g.write(open(r'E:\a.txt').read()) #读取我们要压缩的文件E:\a.txt
g.close()
含义:gzip.GzipFile 表示的是创建了这么一个GZIP对象。可以用这个对象的write方法往压缩文件里面去写内容。
那写什么内容呢。写的就是 open(r'E:\a.txt').read()
的内容了!
解压缩的方法:
g = gzip.GzipFile(mode='rb', fileobj=open(r'E:\test.log.gz','rb'))
#表示的是要解压缩哪个文件了。
open(r'E:\test.log','wb').write(g.read())
#将解压缩出来的数据写到哪个文件中去。
应用举例:
抓取有GZIP压缩的网页
try:
import urllib2, httplib
request = urllib2.Request(url)
request.add_header('Accept-encoding', 'gzip')
opener = urllib2.build_opener()
f = opener.open(request)
if 'gzip' in f.headers.get('Content-Encoding'):
compresseddata = f.read()
import StringIO
compressedstream = StringIO.StringIO(compresseddata)
import gzip
gzipper =
gzip.GzipFile(fileobj=compressedstream)
data = gzipper.read()
gzipper.close()
except:
data = f.read()
f.close()