我如何使用 msgpack 读写?

Posted

技术标签:

【中文标题】我如何使用 msgpack 读写?【英文标题】:How do I read and write with msgpack? 【发布时间】:2017-09-12 12:33:17 【问题描述】:

如何用msgpack 序列化/反序列化字典data

【问题讨论】:

【参考方案1】:

Python docs 似乎不太好,所以这是我的尝试。

安装

pip install msgpack

读写消息包

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import msgpack

# Define data
data = 
    "a list": [1, 42, 3.141, 1337, "help"],
    "a string": "bla",
    "another dict": "foo": "bar", "key": "value", "the answer": 42,


# Write msgpack file
with open("data.msgpack", "wb") as outfile:
    packed = msgpack.packb(data)
    outfile.write(packed)

# Read msgpack file
with open("data.msgpack", "rb") as data_file:
    byte_data = data_file.read()

data_loaded = msgpack.unpackb(byte_data)
print(data == data_loaded)

替代方案

CSV:超级简单的格式 (read & write) JSON:非常适合编写人类可读的数据;非常常用 (read & write) YAML:YAML 是 JSON 的超集,但更易于阅读(read & write、comparison of JSON and YAML) pickle:一种 Python 序列化格式 (read & write) MessagePack (Python package):更紧凑的表示 (read & write) HDF5 (Python package):非常适合矩阵 (read & write) XML: 也存在 *sigh* (read & write)

对于您的应用程序,以下内容可能很重要:

其他编程语言的支持 读/写性能 紧凑性(文件大小)

另见:Comparison of data serialization formats

如果您正在寻找一种制作配置文件的方法,您可能想阅读我的短文Configuration files in Python

【讨论】:

我们现在只使用 pip install msgpack。根据 pypi,msgpack-python 已过时。 msgpack 文件的推荐扩展名是什么? 好吧,我会推荐msgpack。但我也不知道任何其他支持 msgpack 的 Python 包。 msgpack._packer.Packer._pack TypeError: can't serialize 1.0 对我来说,当使用更新版本的 python 时,必须将 rb 标志添加到文件打开函数中(我已阅读,不确定是否编写)。

以上是关于我如何使用 msgpack 读写?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 中使用 msgpack 打包数组?

msgpack可以提供更好的性能和相同的python的struct.pack()功能吗?

如何在 Python 和 R 之间交换 Msgpack 文件?

msgpack 能否提供更好的性能和与 python 的 struct.pack() 相同的功能?

kafka-msgpack-json: 将msgpack和protobuf转化成json

msgpack,fmtlib和RPClib库的介绍及使用