web-dev-qa-db-ja.com

msgpackで読み書きするにはどうすればよいですか?

辞書datamsgpack でシリアル化/逆シリアル化するにはどうすればよいですか?

6
Martin Thoma

Python docs はあまり良くないと思われるので、ここに私の試みを示します。

Installation

pip install msgpack

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)

代替案

アプリケーションでは、次のことが重要になる場合があります。

  • 他のプログラミング言語によるサポート
  • 読み取り/書き込みパフォーマンス
  • コンパクト(ファイルサイズ)

参照: データのシリアル化形式の比較

構成ファイルを作成する方法を探している場合は、私の短い記事 Pythonの構成ファイル を読むことをお勧めします。

23
Martin Thoma