Python/stat

من موسوعة حسوب

يُعرّف الصنف stat ثوابت وتوابع لمعالجة نتيجة استدعاء التوابع os.stat()وos.fstat‎‎()  وos.lstat() وكذلك بطبيعة الحال فهو يعالج نتائج التابع Path.stat‎()، ولا يتم إنشاء كائنات منه، فجميع التوابع والثوابت يمكن الوصول إليها مباشرة من الصنف.

توابع الصنف stat لكشف نوع الملفات

التابع stat.S_ISDIR

للكشف عن كون النمط مشيرًا إلى مجلد.

التابع stat.S_ISCHR

للكشف عن كون النمط مشيرًا إلى ملف character special device.

التابع stat.S_ISBLK

للكشف عن كون النمط مشيرًا إلى ملف block special device.

التابع stat.S_ISREG

للكشف عن كون النمط مشيرًا إلى ملف نظامي.

التابع stat.S_ISFIFO

للكشف عن كون النمط مشيرًا إلى FIFO (أُنبوب مُسمّى) (named pipe).

التابع stat.S_ISLNK

للكشف عن كون النمط مشيرًا إلى اختصار.

التابع stat.S_ISSOCK

للكشف عن كون النمط مشيرًا إلى socket.

التابع stat.S_ISDOOR

للكشف عن كون النمط مشيرًا إلى door.

التابع stat.S_ISPORT

للكشف عن كون النمط مشيرًا إلى event port.

التابع stat.S_ISWHT

للكشف عن كون النمط مشيرًا إلى whiteout.

ميزة توابع الكشف في الصنف stat

تجدر الإشارة إلى أن الطريقة النموذجية للكشف عن نوع ملف ما، هي باستخدام التوابع os.path.is*()، إلا أن توابع الكشف في الصنف stat تسمح بتوفير الموارد عند الحاجة إلى القيام بالعديد من الاختبارات، بدلًا من القيام باستدعاء نظام (system call) في كل اختبار. كما أنها مفيدة للكشف عن أنواع الملفات التي لا يتعامل معها الصنف os.path، كاختبارات block device و character device.

توابع مساعدة في الصنف stat

التابع stat.S_IMODE

يستخرج من النمط (mode) القسم القابل للتعديل باستخدام التابع os.chmod.

التابع stat.S_IFMT

يستخرج من النمط (mode) القسم المعبر عن نوع الملف، وهو القسم الذي تتعامل معه التوابع IS_* المذكور سلفًا.

التابع stat.filemode

يقوم بتحويل نمط الملف إلى سلسلة نصية من الصيغة 'rwxrwxrwx-'.

المتغيرات والثوابت في الصنف stat

وهي على عدة أنواع حسب وظيفتها.

النوع الأول من المتغيرات

متغيرات تكافئ اختصارًا للوصول لعناصر ال‎10-tuple‎ الذي تعيده التوابع os.stat()وos.fstat‎‎()  وos.lstat()

المتغير stat.ST_MODE

نمط الحماية الخاصة بالInode.

المتغير stat.ST_INO

رقم الInode.

المتغير stat.ST_DEV

الجهاز الذي توجد الInode فيه.

المتغير stat.ST_NLINK

عدد الوصلات إلى الInode .

المتغير stat.ST_UID

معرف المستخدم المالك للملف.

المتغير stat.ST_GID

معرف المجموعة المالكة للملف.

المتغير stat.ST_SIZE

حجم الملف مُقاسًا بالبايت للملفات العادية، ويُمثّل كمية البيانات التي تنتظر قراءتها في أنواع خاصة من الملفات.

المتغير stat.ST_ATIME

وقت آخر وصول الملف.

المتغير stat.ST_MTIME

وقت آخر تعديل على الملف.

المتغير stat.ST_CTIME

قيمة ctime كما يحددها نظام التشغيل.

النوع الثاني من المتغيرات

تُعرّف المتغيرات التالية الرايات المستخدمة في الحقل ST_MODE ، إلا أن استخدام التوابع الخاصة بالصنف stat المذكورة سلفًا أكثر محمولية بين أنظمة التشغيل من استخدام هذه الفئة من متغيرات الصنف stat.

الثابت stat.S_IFSOCK

البت المعرف للنوع Socket.

الثابت stat.S_IFLNK

البت المعرف للنوع Symbolic link.

الثابت stat.S_IFREG

البت المعرف للنوع Regular file.

الثابت stat.S_IFBLK

البت المعرف للنوع Block device.

الثابت stat.S_IFDIR

البت المعرف للنوع Directory.

الثابت stat.S_IFCHR

البت المعرف للنوع Character device.

الثابت stat.S_IFIFO

البت المعرف للنوع FIFO.

الثابت stat.S_IFDOOR

البت المعرف للنوع Door، يأخذ القيمة 0 في المنصات غير الداعمة لهذا النوع من الملفات.

الثابت stat.S_IFPORT

البت المعرف للنوع Event port، يأخذ القيمة 0 في المنصات غير الداعمة لهذا النوع من الملفات.

الثابت stat.S_IFWHT

البت المعرف للنوع Whiteout، يأخذ القيمة 0 في المنصات غير الداعمة لهذا النوع من الملفات.

النوع الثالث من المتغيرات

وهي رايات يُمكن استخدامها كوسيط للتابع os.chmod لتغيير نوع الملف بدلًا من استخدام الأعداد الصحيحة.

الثابت stat.S_ISUID

البت Set UID.

الثابت stat.S_ISGID

البت Set-group-ID.

الثابت stat.S_ISVTX

البت اللاصق Sticky bit.

الثابت stat.S_IRWXU

قناع لصلاحيات مالك الملف.

الثابت stat.S_IRUSR

مالك الملف لديه صلاحية القراءة.

الثابت stat.S_IWUSR

مالك الملف لديه صلاحية الكتابة.

الثابت stat.S_IXUSR

مالك الملف لديه صلاحية التشغيل.

الثابت stat.S_IRWXG

قناع لصلاحيات المجموعة.

الثابت stat.S_IRGRP

المجموعة لها صلاحية القراءة.

الثابت stat.S_IWGRP

المجموعة لها صلاحية الكتابة.

الثابت stat.S_IXGRP

المجموعة لها صلاحية التشغيل.

الثابت stat.S_IRWXO

قناع لصلاحيات بقية المستخدمين (غير الموجودين في المجموعة)

الثابت stat.S_IROTH

بقية المستخدمين لهم صلاحية القراءة.

الثابت stat.S_IWOTH

بقية المستخدمين لهم صلاحية الكتابة.

الثابت stat.S_IXOTH

بقيةالمستخدمين لهم صلاحية التشغيل.

الثابت stat.S_ENFMT

ملف نظام V مقفولٌ عمدًا.

الثابت stat.S_IREAD

مشابهة للراية S_IRUSR في Unix V7.

الثابت stat.S_IWRITE

مشابهة للراية S_IWUSR في Unix V7.

الثابت stat.S_IEXEC

مشابهة للراية S_IXUSR في Unix V7.

النوع الرابع من المتغيرات

يُمكن استخدام الرايات التالية كوسيط للتابع os.chflags

الثابت stat.UF_NODUMP

لا تقم بحذف الملف.

الثابت stat.UF_IMMUTABLE

يجب ألا يُغيّر الملف.

الثابت stat.UF_APPEND

يجب ألا يُضاف محتوى إلى الملف.

الثابت stat.UF_OPAQUE

المجلد غير شفاف (opaque) عند عرضه من خلال union stack.

الثابت stat.UF_NOUNLINK

يجب ألا تُعاد تسمية الملف أو حذفه.

الثابت stat.UF_COMPRESSED

الملف محفوظٌ مضغوطًا (+Mac OS X 10.6)

الثابت stat.UF_HIDDEN

يجب ألا يُعرض الملف في واجهة مستخدم رسومية (+Mac OS X 10.5)

الثابت stat.SF_ARCHIVED

يُمكن أرشفة الملف.

الثابت stat.SF_IMMUTABLE

يجب ألا يُغيّر الملف.

الثابت stat.SF_APPEND

يجب ألا يُضاف محتوى إلى الملف.

الثابت stat.SF_NOUNLINK

يجب ألا تُعاد تسمية الملف أو حذفه.

الثابت stat.SF_SNAPSHOT

نوع الملف هو snapshot.

رايات خاصة بنظام ويندوز

يمكن استخدام الرايات التالية في نظام ويندوز لاستخراج مدلول العنصر st_file_attributes الموجود ضمن الtuple الذي يُعيده التابع os.stat في نظام ويندوز فقط.

يمكن مراجعة توثيق Windows API للمزيد من التفاصيل

الثابت stat.FILE_ATTRIBUTE_ARCHIVE
الثابت stat.FILE_ATTRIBUTE_COMPRESSED
الثابت stat.FILE_ATTRIBUTE_DEVICE
الثابت stat.FILE_ATTRIBUTE_DIRECTORY
الثابت stat.FILE_ATTRIBUTE_ENCRYPTED
الثابت stat.FILE_ATTRIBUTE_HIDDEN
الثابت stat.FILE_ATTRIBUTE_INTEGRITY_STREAM
الثابت stat.FILE_ATTRIBUTE_NORMAL
الثابت stat.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
الثابت stat.FILE_ATTRIBUTE_NO_SCRUB_DATA
الثابت stat.FILE_ATTRIBUTE_OFFLINE
الثابت stat.FILE_ATTRIBUTE_READONLY

الثابت stat.FILE_ATTRIBUTE_REPARSE_POINT

الثابت stat.FILE_ATTRIBUTE_SPARSE_FILE

الثابت stat.FILE_ATTRIBUTE_SYSTEM

الثابت stat.FILE_ATTRIBUTE_TEMPORARY

الثابت stat.FILE_ATTRIBUTE_VIRTUAL