如何序列化/反序列化字典data
with msgpack http://msgpack.org/?
The Python 文档 http://msgpack-python.readthedocs.io/en/latest/?badge=latest似乎不太好,所以这是我的尝试。
安装
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:超级简单的格式(读和写 https://stackoverflow.com/a/41585079/562769)
- JSON:适合编写人类可读的数据;非常常用(读和写 https://stackoverflow.com/a/37795053/562769)
- YAML:YAML 是 JSON 的超集,但更易于阅读(读和写 https://stackoverflow.com/a/42054860/562769, JSON 和 YAML 的比较 https://stackoverflow.com/a/1729545/562769)
- pickle:一种 Python 序列化格式(读和写 https://stackoverflow.com/a/33245595/562769)
-
消息包 http://msgpack.org/ (Python包 https://pypi.python.org/pypi/msgpack-python): 更紧凑的表示 (读和写 https://stackoverflow.com/q/43442194/562769)
-
HDF5 https://en.wikipedia.org/wiki/Hierarchical_Data_Format (Python包 http://docs.h5py.org/en/latest/quick.html): 适合矩阵 (读和写 https://stackoverflow.com/a/41586571/562769)
- XML:也存在*叹息*(read https://stackoverflow.com/a/1912483/562769 & write https://stackoverflow.com/a/3605831/562769)
对于您的应用程序,以下内容可能很重要:
- 其他编程语言的支持
- 读/写性能
- 紧凑性(文件大小)
也可以看看:数据序列化格式比较 https://en.wikipedia.org/wiki/Comparison_of_data_serialization_formats
如果您正在寻找一种制作配置文件的方法,您可能需要阅读我的短文Python 中的配置文件 https://martin-thoma.com/configuration-files-in-python/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)