Python-data-persistence-object-serialization
Pythonデータの永続性-オブジェクトのシリアル化
Pythonの組み込みopen()関数によって返されるPythonの組み込みファイルオブジェクトには、1つの重要な欠点があります。 「w」モードで開くと、write()メソッドは文字列オブジェクトのみを受け入れます。
つまり、データが文字列以外の形式で表現されている場合、組み込みクラス(数値、辞書、リスト、タプル)またはその他のユーザー定義クラスのオブジェクトは、直接ファイルに書き込むことはできません。 書く前に、それを文字列表現に変換する必要があります。
numbers=[10,20,30,40]
file=open('numbers.txt','w')
file.write(str(numbers))
file.close()
バイナリファイルの場合、* write()メソッドの引数はバイトオブジェクトでなければなりません。 たとえば、整数のリストは bytearray()*関数によってバイトに変換され、ファイルに書き込まれます。
numbers=[10,20,30,40]
data=bytearray(numbers)
file.write(data)
file.close()
それぞれのデータ型でファイルからデータを読み戻すには、逆変換を行う必要があります。
file=open('numbers.txt','rb')
data=file.read()
print (list(data))
オブジェクトを文字列またはバイト形式に(またはその逆に)変換するこのタイプの手動変換は、非常に面倒で面倒です。 Pythonオブジェクトの状態をバイトストリームの形式でファイルに直接保存したり、メモリストリームを保存して元の状態に戻したりすることができます。 このプロセスは、シリアル化および逆シリアル化と呼ばれます。
Pythonの組み込みライブラリには、シリアライズおよびデシリアライズプロセスのためのさまざまなモジュールが含まれています。
| Sr.No. | Name & Description |
|---|---|
| 1 |
pickle Python固有のシリアル化ライブラリ |
| 2 |
marshal シリアル化のために内部的に使用されるライブラリ |
| 3 |
shelve Pythonicオブジェクトの永続性 |
| 4 |
dbm Unixデータベースへのインターフェイスを提供するライブラリ |
| 5 |
csv PythonデータをCSV形式に保存および取得するためのライブラリ |
| 6 |
json ユニバーサルJSON形式へのシリアル化用ライブラリ |