データマーシャリングのサポート—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/c-api/marshal
移動先:案内検索

データマーシャリングのサポート

これらのルーチンにより、Cコードは marshal モジュールと同じデータ形式を使用してシリアル化されたオブジェクトを処理できます。 シリアル化形式でデータを書き込む関数と、データを読み戻すために使用できる追加の関数があります。 マーシャリングされたデータの保存に使用されるファイルは、バイナリモードで開く必要があります。

数値は最下位バイトを最初に格納されます。

モジュールは、データ形式の2つのバージョンをサポートします。バージョン0は履歴バージョンであり、バージョン1はファイル内のインターンされた文字列を共有し、マーシャリングを解除します。 バージョン2は、浮動小数点数にバイナリ形式を使用します。 Py_MARSHAL_VERSIONは、現在のファイル形式(現在は2)を示します。

void PyMarshal_WriteLongToFile(long value, FILE *file, int version)
long 整数、 value を、 file にマーシャリングします。 これは、の最下位32ビットのみを書き込みます。 ネイティブの long タイプのサイズに関係なく。 バージョンはファイル形式を示します。
void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)
Pythonオブジェクト valuefile にマーシャリングします。 バージョンはファイル形式を示します。
PyObject *PyMarshal_WriteObjectToString(PyObject *value, int version)
value のマーシャリング表現を含むbytesオブジェクトを返します。 バージョンはファイル形式を示します。

次の関数を使用すると、マーシャリングされた値をに読み戻すことができます。

long PyMarshal_ReadLongFromFile(FILE *file)

読み取り用に開いた FILE * のデータストリームからC long を返します。 long のネイティブサイズに関係なく、この関数を使用して読み取ることができるのは32ビット値のみです。

エラーの場合、適切な例外( EOFError )を設定し、-1を返します。

int PyMarshal_ReadShortFromFile(FILE *file)

読み取り用に開いた FILE * のデータストリームからC short を返します。 short のネイティブサイズに関係なく、この関数を使用して読み取ることができるのは16ビット値のみです。

エラーの場合、適切な例外( EOFError )を設定し、-1を返します。

PyObject *PyMarshal_ReadObjectFromFile(FILE *file)

読み取り用に開いた FILE * のデータストリームからPythonオブジェクトを返します。

エラーの場合、適切な例外( EOFErrorValueError または TypeError )を設定し、NULLを返します。

PyObject *PyMarshal_ReadLastObjectFromFile(FILE *file)

読み取り用に開いた FILE * のデータストリームからPythonオブジェクトを返します。 PyMarshal_ReadObjectFromFile()とは異なり、この関数は、ファイルからそれ以上オブジェクトが読み取られないことを前提としているため、ファイルデータをメモリに積極的にロードできるため、逆シリアル化では、メモリ内のデータを読み取るのではなく、メモリ内のデータから操作できます。ファイルから一度に1バイト。 これらのバリアントは、ファイルから他に何も読み取らないことが確実な場合にのみ使用してください。

エラーの場合、適切な例外( EOFErrorValueError または TypeError )を設定し、NULLを返します。

PyObject *PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)

data が指す len バイトを含むバイトバッファ内のデータストリームからPythonオブジェクトを返します。

エラーの場合、適切な例外( EOFErrorValueError または TypeError )を設定し、NULLを返します。