python 自带的 zlib模块

zlib 模块 : 实现数据的 压缩 和 解压缩

'''
zlib 压缩后是一个 字节 类型的数据格式
试过多种方式都无法编译成字符串,字符串为了储存到数据库
'''
'''
解决方法:base64
把 字节 通过base64作一个封装,转成一个可编译的字节,在通过 encode 与decode 进行转化

'''
'''
转化后的 zlib字节 在通过 zlib 进行解压 即可
'''
    @classmethod
    def dumps(cls, obj, compress=False, level=1, ensure_ascii=True):
        if compress:
            compress_obj = zlib.compressobj()
            compress_obj = compress_obj.compress(ujson.dumps(obj).encode('utf-8')) + compress_obj.flush()
            return base64.b64encode(compress_obj).decode('utf-8')
        else:
            return ujson.dumps(obj, double_precision=4, ensure_ascii=ensure_ascii)

    @classmethod
    def loads(cls, string, default=None, decompress=False):
        if decompress:
            decompress_obj = zlib.decompressobj()
            decompress_obj = decompress_obj.decompress(base64.b64decode(string.encode('utf-8'))) + decompress_obj.flush()
            return ujson.loads(decompress_obj)
        else:
            return ujson.loads(string) if string else default
项目实例


 

 

posted @ 2018-05-25 21:15  JAYWX  阅读(2413)  评论(1编辑  收藏  举报