この記事の例では、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 プログラミングの学習に役立つことを願っています。