ホームページ  >  記事  >  バックエンド開発  >  Pythonはマーシャルモジュールを使用してインスタンスをシリアル化します

Pythonはマーシャルモジュールを使用してインスタンスをシリアル化します

WBOY
WBOYオリジナル
2016-06-16 08:41:411372ブラウズ

この記事の例では、Marshal モジュールを使用した Python のシリアル化方法を説明し、参考のために皆さんに共有します。具体的な方法は以下の通りです。

まず次のコードを見てみましょう:

import marshal
data1 = ['abc',12,23,'jb51']  #几个测试数据
data2 = {1:'aaa',"b":'dad'}
data3 = (1,2,4)

output_file = open("a.txt",'wb')#把这些数据序列化到文件中,注:文件必须以二进制模式打开
marshal.dump(data1,output_file)
marshal.dump(data2,output_file)
marshal.dump(data3,output_file)
output_file.close()


input_file = open('a.txt','rb')#从文件中读取序列化的数据
#data1 = []
data1 = marshal.load(input_file)
data2 = marshal.load(input_file)
data3 = marshal.load(input_file)
print data1#给同志们打印出结果看看
print data2
print data3


outstring = marshal.dumps(data1)#marshal.dumps()返回是一个字节串,该字节串用于写入文件
open('out.txt','wb').write(outstring)

file_data = open('out.txt','rb').read()
real_data = marshal.loads(file_data)
print real_data

結果:

['abc', 12, 23, 'jb51']
{1: 'aaa', 'b': 'dad'}
(1, 2, 4)
['abc', 12, 23, 'jb51']

マーシェル モジュールのいくつかの関数の公式説明は次のとおりです:

モジュールは次の関数を定義します:
marshal.dump(値, ファイル[, バージョン])
開いているファイルに値を書き込みます。値は、サポートされているタイプである必要があります。ファイルは、sys.stdout などのオープン ファイル オブジェクトであるか、open() または os.popen() によって返される必要があります。 'wb' または 'w+b')。
値にサポートされていない型がある (またはそのオブジェクトが含まれている) 場合、ValueError 例外が発生します。ただし、オブジェクトは、load().
によって正しく読み取られません。 バージョン 2.4 の新機能: version 引数は、ダンプが使用するデータ形式を示します (以下を参照)。
marshal.load(ファイル)
開いているファイルから 1 つの値を読み取り、それを返します。有効な値が読み込まれない場合 (たとえば、データに互換性のない Python バージョンがある場合)、ファイルはバイナリで開かれたファイル オブジェクトである必要があります。モード ('rb' または 'r+b')。
警告
サポートされていない型を含むオブジェクトが dump() でマーシャリングされた場合、load() はマーシャリングできない型を None に置き換えます。
marshal.dumps(値[, バージョン])
dump(value, file) によってファイルに書き込まれる文字列を返します。value にサポートされていない型がある (またはそのオブジェクトが含まれている) 場合、値はサポートされている型である必要があります。
バージョン 2.4 の新機能: version 引数は、ダンプが使用するデータ形式を示します (以下を参照)。
marshal.loads(文字列)
文字列を値に変換します。有効な値が見つからない場合は、EOFError、ValueError、または TypeError が発生します。文字列内の余分な文字は無視されます。
さらに、次の定数が定義されています:
marshal.version
モジュールが使用する形式を示します。

marshal.version の使用: marshal は異なる Python バージョン間の互換性を保証するものではないため、バージョン情報を保持する機能です。

この記事が皆さんの Python プログラミングの学習に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。