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 للمزيد من التفاصيل