使用msgpack压缩文件(python)

压缩数据并写入本地文件

import random
import msgpack

def mock_res(bitnum: int):
    res = {}
    for i in range(2**bitnum):
        val = random.random() 
        key = bin(i)[2:].zfill(bitnum)
        res[key] = val
    return res

qnum = 30
data = mock_res(qnum)
packed_data = msgpack.packb(data, use_bin_type=True)
with open("data.msgpack", "wb") as f: 
    f.write(packed_data)

将本地文件读出并解压成python对象

import msgpack

with open('data.msgpack', 'rb') as f:
    raw = f.read()
    data = msgpack.unpackb(raw, strict_map_key=False)

压缩数据并上传到云存储

import random
import msgpack

def mock_res(bitnum: int):
    res = {}
    for i in range(2**bitnum):
        val = random.random() 
        key = bin(i)[2:].zfill(bitnum)
        res[key] = val
    return res

def saveByApi(obj_host, obj_key, data):
    value_as_bytes = msgpack.packb(data, use_bin_type=True)
    value_as_a_stream = BytesIO(value_as_bytes)
    fileUrl = f'http://{obj_host}/{obj_key}'
    res = requests.post(fileUrl, files={'file': value_as_a_stream}, headers = {'accept': 'application/json'}, timeout=1800)
    res_data = json.loads(res.content)
    print(res_data)     

qnum = 30
data = mock_res(qnum)
saveByApi('192.168.9.112:7333', 'data.msgpack', data)

读出云上文件并解压成python对象

import msgpack

def read(obj_host, obj_key):
    fileUrl = f'http://{obj_host}/{obj_key}'
    res = requests.get(fileUrl)
    if res.content:
        data = msgpack.unpackb(res.content, strict_map_key=False)

read('192.168.9.112:7333', 'data.msgpack')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容