Python模块学习 ---- zlib 数据压缩

python的标准库中的模块,用于数据压缩与解压


压缩数据流

zlib.compress(string[,level])

参数:指定压缩字符串,指定压缩级别:1-9,与压缩速度成反比,就是说1压缩速度最快,但是压缩率低。9压缩速度最慢,但是压缩率高,返回压缩结果


解压数据流

zlib.decompress(string[,wbits[,bufsize]])

参数:指定解压字符串,wbits和bufsize分别用于设置系统缓冲区大小(window buffer)与输出缓冲区大小(output buffer)

# -*- coding: utf-8 -*-
'''
create on:2014-09-12 16:39:24
'''
import zlib
import urllib

# 下载百度首页HTML
fp = urllib.urlopen("http://www.sina.com")
str = fp.read()
fp.close()
print len(str)

# 压缩数据流
str1 = zlib.compress(str, zlib.Z_BEST_COMPRESSION)
print len(str1)
str2 = zlib.decompress(str1)
print len(str2)

对象压缩数据

zlib.compressobj([level])

解压对象数据

zlib.decomperssobj(string[,wbits[,bufsize]])

和上面主要的区别在于,如果要解压缩上百M的数据文件,上面的方法会一次性全部加入到内存,下面的则会一次读取一部分解压缩,知道结束

import zlib, sys

compressor = zlib.compress(1)
# 输入文件路径
filein = raw_input("plz input the filename:")
fileout = raw_input("plz input the comperssed filename:")

# 打开文件
fdin = open(filein, "r")
fdout = open(fileout, "wb")

# 读取文件并压缩,同时写入文件
while 1:
    block = fdin.read(64)
    if not block:
        break
    compressed = compressor.compress(block)
    fdout.write(compressed)
remaining = compressor.flush()
fdout.write(remaining)

print "compressed: %s" % filein

fdin.close()
fdout.close()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值