How do I serialize / deserialize a dictionary data
with msgpack?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
The Python docs seem not to be so good, so here is my try.
Installation
pip install msgpack
Read and Write 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', 'w') as outfile:
msgpack.pack(data, outfile)
# Read msgpack file
with open('data.msgpack') as data_file:
# data_loaded = json.load(data_file)
data_loaded = msgpack.unpack(data_file)
print(data == data_loaded)
Alternatives
- CSV: Super simple format (read & write)
- JSON: Nice for writing human-readable data; VERY commonly used (read & write)
- YAML: YAML is a superset of JSON, but easier to read (read & write, comparison of JSON and YAML)
- pickle: A Python serialization format (read & write)
- MessagePack (Python package): More compact representation (read & write)
- HDF5 (Python package): Nice for matrices (read & write)
- XML: exists too *sigh* (read & write)
For your application, the following might be important:
- Support by other programming languages
- Reading / writing performance
- Compactness (file size)
See also: Comparison of data serialization formats
In case you are rather looking for a way to make configuration files, you might want to read my short article Configuration files in Python