Підтримка маршалінгу даних¶
Ці процедури дозволяють коду C працювати з серіалізованими об’єктами, використовуючи той самий формат даних, що й модуль marshal
. Існують функції для запису даних у формат серіалізації та додаткові функції, які можна використовувати для зворотного читання даних. Файли, які використовуються для зберігання маршалованих даних, необхідно відкривати в двійковому режимі.
Числові значення зберігаються з молодшим байтом першим.
The module supports two versions of the data format: version 0 is the
historical version, version 1 shares interned strings in the file, and upon
unmarshalling. Version 2 uses a binary format for floating point numbers.
Py_MARSHAL_VERSION
indicates the current file format (currently 2).
-
void
PyMarshal_WriteLongToFile
(long value, FILE *file, int version)¶ Marshal a
long
integer, value, to file. This will only write the least-significant 32 bits of value; regardless of the size of the nativelong
type. version indicates the file format.This function can fail, in which case it sets the error indicator. Use
PyErr_Occurred()
to check for that.
-
void
PyMarshal_WriteObjectToFile
(PyObject *value, FILE *file, int version)¶ Маршал об’єкта Python, значення, до файлу. версія вказує на формат файлу.
This function can fail, in which case it sets the error indicator. Use
PyErr_Occurred()
to check for that.
-
PyObject*
PyMarshal_WriteObjectToString
(PyObject *value, int version)¶ - Return value: New reference.
Повертає об’єкт bytes, що містить упорядковане представлення value. версія вказує на формат файлу.
Наступні функції дозволяють зчитувати упорядковані значення.
-
long
PyMarshal_ReadLongFromFile
(FILE *file)¶ Return a C
long
from the data stream in aFILE*
opened for reading. Only a 32-bit value can be read in using this function, regardless of the native size oflong
.У разі помилки встановлює відповідний виняток (
EOFError
) і повертає-1
.
-
int
PyMarshal_ReadShortFromFile
(FILE *file)¶ Return a C
short
from the data stream in aFILE*
opened for reading. Only a 16-bit value can be read in using this function, regardless of the native size ofshort
.У разі помилки встановлює відповідний виняток (
EOFError
) і повертає-1
.
-
PyObject*
PyMarshal_ReadObjectFromFile
(FILE *file)¶ - Return value: New reference.
Return a Python object from the data stream in a
FILE*
opened for reading.У разі помилки встановлює відповідний виняток (
EOFError
,ValueError
абоTypeError
) і повертаєNULL
.
-
PyObject*
PyMarshal_ReadLastObjectFromFile
(FILE *file)¶ - Return value: New reference.
Return a Python object from the data stream in a
FILE*
opened for reading. UnlikePyMarshal_ReadObjectFromFile()
, this function assumes that no further objects will be read from the file, allowing it to aggressively load file data into memory so that the de-serialization can operate from data in memory rather than reading a byte at a time from the file. Only use these variant if you are certain that you won’t be reading anything else from the file.У разі помилки встановлює відповідний виняток (
EOFError
,ValueError
абоTypeError
) і повертаєNULL
.
-
PyObject*
PyMarshal_ReadObjectFromString
(const char *data, Py_ssize_t len)¶ - Return value: New reference.
Повертає об’єкт Python із потоку даних у байтовий буфер, що містить len байти, на які вказує data.
У разі помилки встановлює відповідний виняток (
EOFError
,ValueError
абоTypeError
) і повертаєNULL
.