使用gzip包,对pickle数据进行压缩,可以设置压缩级别,等级跟压缩率对应。
try:
import cPickle as pickle
except:
import pickle
import functools
import os
import io
import gzip
from bz2 import BZ2File
from contextlib import closing
import zlib
def gzip_pickle_dump(fname, obj, compresslevel=9):
pickle.dump(obj=obj, file=gzip.open(fname, "wb", compresslevel=compresslevel), protocol=2)
def gzip_unpickle(fname):
return pickle.load(gzip.open(fname, "rb"))
# 使用zlib 对文本进行压缩
def text_compress(text, level=9):
return zlib.compress(text, level)
# 解压
def text_decompress(text):
return zlib.decompress(text)
def timeit(func):
@functools.wraps(func)
def new_func(*args, **kwargs):
start_time = time.time()
func(*args, **kwargs)
elapsed_time = time.time() - start_time
print('function [{}] finished in {} ms'.format(
func.__name__, int(elapsed_time * 1000)))
return new_func
if __name__ == '__main__':
import random
cjb=[]
for i in range(5):
name=input("name:")
cj=random.randint(50,100)
cjb.append([name,cj])
print(cjb)
gzip_pickle_dump("output.pklzip", cjb)
print(gzip_unpickle("output.pklzip"))
