本文实例讲述了Python实现压缩与解压gzip大文件的方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#encoding=utf-8
#author: walker
#date: 2015-10-26
#summary: 测试gzip压缩/解压文件
import gzip
BufSize = 1024 * 8
def gZipFile(src, dst):
fin = open (src, 'rb' )
fout = gzip. open (dst, 'wb' )
in2out(fin, fout)
def gunZipFile(gzFile, dst):
fin = gzip. open (gzFile, 'rb' )
fout = open (dst, 'wb' )
in2out(fin, fout)
def in2out(fin, fout):
while True :
buf = fin.read(BufSize)
if len (buf) < 1 :
break
fout.write(buf)
fin.close()
fout.close()
if __name__ = = '__main__' :
src = r 'D:\tmp\src.txt'
dst = r 'D:\tmp\src.txt.gz'
ori = r 'D:\tmp\ori.txt'
gZipFile(src, dst)
print ( 'gZipFile over!' )
gunZipFile(dst, ori)
print ( 'gunZipFile over!' )
|
也可以简单地封装成一个类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
class GZipTool:
def __init__( self , bufSize):
self .bufSize = bufSize
self .fin = None
self .fout = None
def compress( self , src, dst):
self .fin = open (src, 'rb' )
self .fout = gzip. open (dst, 'wb' )
self .__in2out()
def decompress( self , gzFile, dst):
self .fin = gzip. open (gzFile, 'rb' )
self .fout = open (dst, 'wb' )
self .__in2out()
def __in2out( self ,):
while True :
buf = self .fin.read( self .bufSize)
if len (buf) < 1 :
break
self .fout.write(buf)
self .fin.close()
self .fout.close()
|
希望本文所述对大家Python程序设计有所帮助。