تقنية

stat في بايثون: بتات الصلاحيات لا تحدد نوع الملف

الملف العادي والمجلد يعطيان بتات 600 نفسها
وضعان مؤلفان؛ REG عادي وDIR مجلد. [1] [2]

افصل النوع عن الصلاحيات. [1] [2]

الخلاصة السريعة

تساوي S_IMODE لا يثبت تساوي النوع. [1] [2]

  • S_ISREG يفحص نوع الملف العادي. [1] [2]
  • نركب وضعين: S_IFREG|0o600 وS_IFDIR|0o600. [1] [2]
  • S_IMODE يعيد 0o600 لكليهما. [1] [2]
  • S_ISREG يعيد True للأول وFalse للثاني. [1] [2]
  • اختبرنا 3.12.14 بأعداد مؤلفة؛ لم نفحص ملفات أو نختبر الوصول إليها. [1] [2]

المثال

import stat as s
for kind in [
 s.S_IFREG,s.S_IFDIR]:
 m=kind|0o600
 print(oct(s.S_IMODE(m)),
       s.S_ISREG(m))

[1] [2]

المخرجات: 0o600 True ثم 0o600 False. البادئة 0o تعني التمثيل الثماني. [1] [2]

أي جزء تفحص؟

النوع مختلف رغم تطابق بتات الصلاحيات في المثال. استخراجها وحده لا يسأل هل الوضع لملف عادي أم مجلد. [1] [2]

فحص الملف العادي يميز REG من DIR
النوع مختلف. [1] [2]

S_IMODE يشمل أيضًا بتات خاصة على الأنظمة الداعمة؛ لا نحصر تعريفه في بتات القراءة والكتابة والتنفيذ. [1] [2]

حدود التجربة

الأعداد ليست نتائج فحص نظام الملفات. لم نغير صلاحيات أو نفتح ملفًا؛ المخرجات لا تثبت وجوده أو إمكانية قراءته. [1] [2]

المراجع

  1. Python: stat
  2. CPython 3.12.14: _stat.c
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.