AzLearn

pathlib و os

pathlib & os

مفهوم ~18 دقيقة

pathlib و os — التعامل مع نظام الملفات

قبل Python 3.4، كان العمل مع الملفات والمجلدات يعني تعلّم دوال os.path والجمع بينها بطريقة مربكة:

# الأسلوب القديم — Old way (os.path)
import os
مسار = os.path.join(os.path.expanduser("~"), "documents", "report.txt")
if os.path.exists(مسار) and os.path.isfile(مسار):
    with open(مسار, "r") as ف:
        محتوى = ف.read()

Python 3.4 أضافت pathlib — وحدة تعامل مع المسارات كـ كائنات بدلاً من نصوص. النتيجة كود أوضح وأكثر أماناً:

# الأسلوب الحديث — Modern way (pathlib)
from pathlib import Path
مسار = Path.home() / "documents" / "report.txt"
if مسار.is_file():
    محتوى = مسار.read_text()

الفرق؟ المسار أصبح كائناً ذكياً — يعرف ما هو، ويمكنه الإجابة على أسئلة عن نفسه.

إنشاء كائنات Path

main.go

فحص المسارات

main.go

القراءة والكتابة

pathlib تجعل قراءة الملفات وكتابتها بسيطة جداً للملفات النصية وغير النصية:

main.go

إنشاء المجلدات وfglob

main.go

os.environ — متغيرات البيئة

متغيرات البيئة (environment variables) هي طريقة آمنة لتمرير الإعدادات والأسرار للبرنامج بدلاً من كتابتها في الكود:

main.go

pathlib مقابل os.path — المقارنة

لماذا نفضّل pathlib في الكود الحديث؟

المهمةos.path (القديم)pathlib (الحديث)
دمج مساراتos.path.join(a, b, c)Path(a) / b / c
اسم الملفos.path.basename(p)p.name
المجلد الأبos.path.dirname(p)p.parent
الامتدادos.path.splitext(p)[1]p.suffix
هل يوجد؟os.path.exists(p)p.exists()
هل ملف؟os.path.isfile(p)p.is_file()
قراءة ملفopen(p).read()p.read_text()
كتابة ملفopen(p, "w").write(d)p.write_text(d)

pathlib لا تحلّ فقط مشكلة التركيب الطويل — بل تجعل المسار كائناً يعرف نفسه ويمكنك سؤاله مباشرة.

لا يزال os.path موجوداً وصحيحاً تماماً — ستجده في الكود القديم كثيراً. لكن للكود الجديد، pathlib هي الاختيار الأوضح.

تحدي — Challenge