پشتیبانی از مارشالینگ داده¶
این روتینها به کد C اجازه میدهند تا با اشیاء سریالسازیشده، با استفاده از همان قالب دادهی ماژول marshal کار کند. توابعی برای نوشتن دادهها در قالب سریالسازی وجود دارند و علاوه بر آنها، توابع دیگری نیز هستند که میتوان از آنها برای بازخوانی دادهها استفاده کرد. پروندههایی که برای ذخیرهسازی دادههای مارشالشده استفاده میشوند، باید در حالت دودویی باز شوند.
مقادیر عددی بهگونهای ذخیره میشوند که کمارزشترین بایت در ابتدا قرار گیرد.
این ماژول از چندین نسخه از قالب داده پشتیبانی میکند؛ برای جزئیات، مستندات ماژول پایتون را ببینید.
-
Py_MARSHAL_VERSION¶
نسخهی فعلی قالب. به
marshal.versionمراجعه کنید.
-
void PyMarshal_WriteLongToFile(long value, FILE *file, int version)¶
یک عدد صحیح long به نام value را در file مارشال میکند. این تابع تنها ۳۲ بیت کمارزش value را مینویسد؛ صرفنظر از اندازهی نوع بومی long. version قالب پرونده را نشان میدهد.
این تابع میتواند شکست بخورد، که در این صورت نشانگر خطا را تنظیم میکند. برای بررسی این موضوع از
PyErr_Occurred()استفاده کنید.
-
void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)¶
یک شیء پایتون، value، را به file مارشال کنید. version قالب پرونده را مشخص میکند.
این تابع میتواند شکست بخورد، که در این صورت نشانگر خطا را تنظیم میکند. برای بررسی این موضوع از
PyErr_Occurred()استفاده کنید.
-
PyObject *PyMarshal_WriteObjectToString(PyObject *value, int version)¶
- مقدار بازگشتی: مرجع جدید.
یک شیء bytes حاوی نمایش مارشالشدهی value را برمیگرداند. version قالب پرونده را مشخص میکند.
توابع زیر امکان بازخوانی مقادیر مارشالشده را فراهم میکنند.
-
long PyMarshal_ReadLongFromFile(FILE *file)¶
یک long سی را از جریان داده در یک FILE* که برای خواندن باز شده است برمیگرداند. با استفاده از این تابع تنها میتوان یک مقدار ۳۲ بیتی را خواند، صرفنظر از اندازه بومی long.
در صورت خطا، استثنای مناسب (
EOFError) را تنظیم میکند و-1را برمیگرداند.
-
int PyMarshal_ReadShortFromFile(FILE *file)¶
بازگرداندن یک short از زبان C از جریان داده در یک FILE* که برای خواندن باز شده است. با استفاده از این تابع فقط میتوان یک مقدار ۱۶ بیتی را خواند، صرفنظر از اندازه بومی short.
در صورت خطا، استثنای مناسب (
EOFError) را تنظیم میکند و-1را برمیگرداند.
-
PyObject *PyMarshal_ReadObjectFromFile(FILE *file)¶
- مقدار بازگشتی: مرجع جدید.
یک شیء پایتون را از جریان داده در یک FILE* که برای خواندن باز شده است، برمیگرداند.
در صورت خطا، استثنای مناسب (
EOFError،ValueErrorیاTypeError) را تنظیم میکند وNULLرا برمیگرداند.
-
PyObject *PyMarshal_ReadLastObjectFromFile(FILE *file)¶
- مقدار بازگشتی: مرجع جدید.
یک شیء پایتون را از جریان داده در یک FILE* بازشده برای خواندن برمیگرداند. برخلاف
PyMarshal_ReadObjectFromFile()، این تابع فرض میکند که هیچ شیء دیگری از پرونده خوانده نخواهد شد و همین فرض به آن اجازه میدهد که دادههای پرونده را بهطور پرخاشگرانه در حافظه بارگذاری کند تا سریالزدایی بتواند بهجای خواندن بایتبهبایت از پرونده، بر اساس دادههای موجود در حافظه عمل کند. تنها در صورتی از این گونه استفاده کنید که مطمئن باشید هیچ چیز دیگری از پرونده نخواهید خواند.در صورت خطا، استثنای مناسب (
EOFError،ValueErrorیاTypeError) را تنظیم میکند وNULLرا برمیگرداند.
-
PyObject *PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)¶
- مقدار بازگشتی: مرجع جدید.
یک شیء پایتون را از جریان داده در یک بافر بایت شامل len بایت که data به آن اشاره میکند، برمیگرداند.
در صورت خطا، استثنای مناسب (
EOFError،ValueErrorیاTypeError) را تنظیم میکند وNULLرا برمیگرداند.