利用python中的gzip模块压缩和解压数据流和文件
生活随笔
收集整理的這篇文章主要介紹了
利用python中的gzip模块压缩和解压数据流和文件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
直接給出源碼實現(xiàn), 分為兩種情況:
1.網(wǎng)絡連接中的數(shù)據(jù)流的壓縮和解壓,或是打開的文件讀取一部分
2.打開文件壓縮或是解壓
#!/usr/bin/env python
#encoding: utf-8
#filename: gzip_demo.py
#author: tao_627@aliyun.com
#date: 2015-06-30import gzip, binascii, os
from cStringIO import StringIOdef gzip_compress(raw_data):buf = StringIO()f = gzip.GzipFile(mode='wb', fileobj=buf)try:f.write(raw_data)finally:f.close()return buf.getvalue()def gzip_uncompress(c_data):buf = StringIO(c_data)f = gzip.GzipFile(mode = 'rb', fileobj = buf)try:r_data = f.read()finally:f.close()return r_datadef compress_file(fn_in, fn_out):f_in = open(fn_in, 'rb')f_out = gzip.open(fn_out, 'wb')f_out.writelines(f_in)f_out.close()f_in.close()def uncompress_file(fn_in, fn_out):f_in = gzip.open(fn_in, 'rb')f_out = open(fn_out, 'wb')file_content = f_in.read()f_out.write(file_content)f_out.close()f_in.close()if __name__ == '__main__':in_data = 'hello, world!'print in_dataout_data = gzip_compress(in_data)print binascii.hexlify(out_data)r_data = gzip_uncompress(out_data)print r_dataraw_f = '/opt/log/raw/access.log_HLJYD-ICS-68_20150609040506.old'#raw_f = '/home/taoyx/program_develop/python_dev/a.html';gzip_f2 = '/opt/log/raw/access.log_HLJYD-ICS-68_20150609040506.gz'#gzip_f2 = '/home/taoyx/program_develop/python_dev/log_gz/cpm.access.log-20150225.gz'#gzip_f2 = '/home/taoyx/program_develop/python_dev/a.html.1.gz'compress_file(raw_f, gzip_f2)#gunzip_f = '/home/taoyx/program_develop/python_dev/log_gz/cpm.access.log-20150225.old'#gunzip_f = '/home/taoyx/program_develop/python_dev/a.html.1'#uncompress_file(gzip_f2, gunzip_f)
請自己修改輸入和輸出文件路徑, 確保相應的文件存在, 取消相應的注釋進行測試.
參考文獻:
[1].https://docs.python.org/2/library/gzip.html? ?官網(wǎng)
[2].http://blog.csdn.net/jhonguy/article/details/7867348?
總結(jié)
以上是生活随笔為你收集整理的利用python中的gzip模块压缩和解压数据流和文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hmac-sha1加密算法C源码示例
- 下一篇: ATS日志格式中的Squid-和Nets