شرح مكتبة os في بايثون للتعامل مع الملفات والمجلدات | أساسيات بايثون 25

شرح مكتبة os في بايثون للتعامل مع الملفات والمجلدات والمسارات | أساسيات بايثون 25

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

في هذا الدرس الخامس والعشرين من كورس أساسيات بايثون سنتعلم أهم دوال os وos.path للمبتدئين مثل getcwd() وlistdir() وmkdir() وwalk() وpath.join() وpath.exists()، مع أمثلة عملية وتحذيرات مهمة عند الحذف والتعامل مع المسارات.

سنركز على المهارات التي تحتاجها في المشاريع الصغيرة فعلًا، ثم نوضح أين تختلف os عن pathlib ومتى يكون الانتقال إلى الأدوات الحديثة للمسارات مفيدًا.

{getToc} $title={محتوى المقال}

الفكرة المختصرة: استخدم os عندما تحتاج إلى التفاعل مع نظام التشغيل والملفات والمجلدات، واستخدم أدوات بناء المسارات بدل تركيبها يدويًا كنصوص. {alertInfo}

ما هي مكتبة os في Python؟

مكتبة os هي مكتبة قياسية مرفقة مع Python، أي أنك لا تحتاج إلى تثبيتها باستخدام pip. كل ما تحتاجه هو استدعاؤها داخل ملف Python باستخدام أمر import.

import os

بعد كتابة هذا السطر، تستطيع استخدام الأدوات الموجودة داخل مكتبة os مثل:

  • os.getcwd() لمعرفة المجلد الحالي.
  • os.listdir() لعرض الملفات والمجلدات.
  • os.mkdir() لإنشاء مجلد جديد.
  • os.rmdir() لحذف مجلد فارغ.
  • os.path.exists() لفحص هل الملف أو المجلد موجود.
  • os.path.join() لبناء مسارات صحيحة.

إذا لم تكن تعرف معنى import جيدًا، أنصحك بمراجعة درس شرح Modules و import في Python للمبتدئين قبل التوسع في هذا الدرس.

لماذا نحتاج مكتبة os؟

عندما تكتب برامج بسيطة جدًا، قد لا تحتاج إلى التعامل مع ملفات ومجلدات كثيرة. لكن مع الوقت، ستجد نفسك تريد تنفيذ أمور مثل:

  • معرفة مكان تشغيل البرنامج.
  • قراءة جميع الملفات داخل مجلد معين.
  • إنشاء مجلد لحفظ النتائج.
  • التأكد من وجود ملف قبل فتحه.
  • بناء مسار ملف بطريقة تعمل على Windows و Linux و macOS.
  • تنظيم ملفات كثيرة حسب الامتداد أو الاسم.

بدون مكتبة مثل os ستضطر إلى كتابة المسارات يدويًا، وقد تظهر لك مشاكل كثيرة، خصوصًا عندما ينتقل المشروع من جهاز إلى جهاز آخر.

مهم للمبتدئين: لا تحفظ مسارات الملفات بطريقة عشوائية داخل الكود، لأن شكل المسار قد يختلف بين Windows و Linux و macOS. استخدم أدوات مثل os.path.join() لبناء المسار بطريقة أفضل. {alertWarning}

استدعاء مكتبة os

مثل أي مكتبة قياسية في Python، نبدأ باستدعاء os في أعلى الملف:

import os

print("تم استدعاء مكتبة os بنجاح")

الناتج المتوقع:

تم استدعاء مكتبة os بنجاح

لاحظ أنك لا تكتب pip install os؛ لأن os ليست مكتبة خارجية. هي موجودة ضمن مكتبات Python القياسية.

معرفة المجلد الحالي باستخدام os.getcwd

من أكثر الأوامر استخدامًا في مكتبة os هو الأمر os.getcwd(). كلمة getcwd اختصار لعبارة get current working directory، أي: احصل على مجلد العمل الحالي.

import os

current_folder = os.getcwd()
print(current_folder)

قد يظهر لك ناتج شبيه بهذا في Windows:

C:\Users\Admin\Desktop\python_project

وقد يظهر بهذا الشكل في Linux أو macOS:

/home/user/Desktop/python_project

المهم هنا أن os.getcwd() يعيد مجلد العمل الحالي Current Working Directory. هذا هو المجلد الذي تعتمد عليه المسارات النسبية أثناء التشغيل.

انتبه: مجلد العمل الحالي ليس بالضرورة هو المجلد الذي يوجد فيه ملف .py. قد يتغير حسب المكان الذي شغّلت منه البرنامج أو إعدادات المحرر. إذا كنت تحتاج مسار ملف السكربت نفسه، فهذه مسألة مختلفة عن getcwd(). {alertWarning}

تغيير مجلد العمل الحالي باستخدام os.chdir

إذا احتجت أن تجعل البرنامج يعمل من مجلد آخر، يمكنك استخدام os.chdir(). بعد تغيير مجلد العمل، ستتأثر المسارات النسبية التي تستخدمها أوامر مثل open() وos.listdir().

import os

os.chdir("data")

print(os.getcwd())

في هذا المثال ينتقل البرنامج إلى مجلد data ثم يطبع مجلد العمل الجديد. إذا كان المجلد غير موجود فسيظهر FileNotFoundError، لذلك استخدم chdir() فقط عندما تعرف المسار الذي تريد الانتقال إليه.

مهم: os.chdir() يغيّر مجلد العمل للعملية الجارية، ولا ينقل ملف .py نفسه إلى مكان آخر. {alertInfo}
معرفة مجلد العمل الحالي في بايثون باستخدام os.getcwd مع توضيح Current Working Directory

عرض الملفات والمجلدات باستخدام os.listdir

إذا أردت معرفة الملفات والمجلدات الموجودة داخل مجلد معين، يمكنك استخدام os.listdir().

import os

items = os.listdir()

print(items)

إذا كان المجلد يحتوي على ملفات مثل main.py و notes.txt ومجلد باسم images، فقد يظهر الناتج مثل:

['main.py', 'notes.txt', 'images']

يمكنك أيضًا تحديد مجلد معين:

import os

items = os.listdir("data")

print(items)

هذا الكود يعرض محتويات مجلد اسمه data، بشرط أن يكون موجودًا داخل مجلد المشروع الحالي.

تنبيه: إذا طلبت من Python عرض محتويات مجلد غير موجود، سيظهر خطأ. لذلك من الأفضل أحيانًا فحص وجود المجلد أولًا باستخدام os.path.exists(). {alertWarning}

طباعة كل ملف في سطر مستقل

بدل طباعة القائمة كاملة دفعة واحدة، يمكنك استخدام حلقة for لطباعة كل عنصر في سطر منفصل:

import os

items = os.listdir()

for item in items:
    print(item)

الناتج قد يكون مثل:

main.py
notes.txt
images

هذا الأسلوب مفيد عندما تريد لاحقًا فحص كل ملف، معرفة امتداده، أو تنفيذ عملية عليه.

البحث داخل المجلدات الفرعية باستخدام os.walk

الدالة os.listdir() تعرض محتويات مجلد واحد فقط. إذا أردت المرور على المجلد نفسه وكل المجلدات الفرعية داخله بشكل متكرر، استخدم os.walk().

import os

for root, dirs, files in os.walk("data"):
    for file_name in files:
        full_path = os.path.join(root, file_name)
        print(full_path)

في كل دورة تعيد os.walk() ثلاث قيم: root للمجلد الحالي، وdirs للمجلدات الفرعية، وfiles للملفات الموجودة فيه. لذلك فهي مناسبة للبحث داخل شجرة مجلدات كاملة أو معالجة ملفات موزعة في عدة مستويات.

الفرق السريع: استخدم os.listdir() لمجلد واحد، واستخدم os.walk() عندما تحتاج إلى المرور على المجلدات الفرعية أيضًا. {alertSuccess}

إذا لم تكن مرتاحًا مع الحلقات، راجع درس شرح Loops في Python للمبتدئين لأنه مهم جدًا لفهم أمثلة هذا الدرس.

عرض الملفات والمجلدات في بايثون باستخدام os.listdir والمرور عليها بحلقة for

الفرق بين الملف والمجلد في os

عند استخدام os.listdir()، قد تحصل على أسماء ملفات ومجلدات معًا. لكن كيف تعرف هل العنصر ملف أم مجلد؟

هنا نستخدم:

  • os.path.isfile() لفحص هل المسار ملف.
  • os.path.isdir() لفحص هل المسار مجلد.
import os

items = os.listdir()

for item in items:
    if os.path.isfile(item):
        print(item, "ملف")
    elif os.path.isdir(item):
        print(item, "مجلد")

هذا الكود يمر على جميع العناصر في المجلد الحالي، ثم يطبع هل كل عنصر ملف أم مجلد.

بناء المسارات بطريقة صحيحة باستخدام os.path.join

واحدة من أهم النقاط في التعامل مع الملفات هي بناء المسارات. قد يكتب المبتدئ مسارًا بهذا الشكل:

file_path = "data/info.txt"

قد يعمل هذا المسار في بعض الحالات، لكنه ليس دائمًا أفضل حل، لأن طريقة كتابة المسارات تختلف بين أنظمة التشغيل. لذلك الأفضل استخدام os.path.join().

import os

file_path = os.path.join("data", "info.txt")

print(file_path)

الفائدة هنا أن Python يضم أجزاء المسار بطريقة تراعي قواعد نظام التشغيل بدل لصق الفواصل يدويًا. وهذا يجعل الكود أكثر قابلية للنقل بين Windows وLinux وmacOS.

قاعدة ذهبية: عند بناء مسار من عدة أجزاء، استخدم os.path.join() أو pathlib بدل لصق النصوص يدويًا. هذا يحسن قابلية نقل المسار، لكنه لا يعني أن أي مسار قادم من المستخدم أصبح آمنًا أمنيًا. {alertSuccess}

استخراج أجزاء المسار باستخدام os.path

توفر os.path دوال صغيرة مفيدة لفهم المسار نفسه. يمكنك استخراج اسم الملف باستخدام basename()، والمجلد الأب باستخدام dirname()، وتحويل مسار نسبي إلى مسار مطلق باستخدام abspath().

import os

file_path = os.path.join("data", "reports", "sales.csv")

print(os.path.basename(file_path))
print(os.path.dirname(file_path))
print(os.path.abspath(file_path))

هذه الدوال لا تفتح الملف ولا تنشئه؛ هي تتعامل مع نص المسار وتساعدك على معرفة أجزائه أو تحويله إلى صيغة أوضح للاستخدام داخل البرنامج.

فحص وجود ملف أو مجلد باستخدام os.path.exists

قبل أن تفتح ملفًا أو تدخل إلى مجلد، من الأفضل أن تتأكد أنه موجود. هذا يمنع كثيرًا من الأخطاء.

import os

file_path = os.path.join("data", "info.txt")

if os.path.exists(file_path):
    print("الملف موجود")
else:
    print("الملف غير موجود")

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

ولفهم التعامل مع الأخطاء بشكل أعمق، راجع درس شرح try و except في Python والتعامل مع الأخطاء.

إنشاء وحذف المجلدات في بايثون باستخدام os.mkdir و os.makedirs و os.rmdir

إنشاء مجلد جديد باستخدام os.mkdir

لإنشاء مجلد جديد من داخل Python، نستخدم os.mkdir().

import os

os.mkdir("results")

print("تم إنشاء المجلد بنجاح")

هذا الكود ينشئ مجلدًا باسم results داخل المجلد الحالي.

لكن انتبه: إذا كان المجلد موجودًا مسبقًا، سيظهر خطأ. لذلك الأفضل أن نفحص أولًا:

import os

folder_name = "results"

if not os.path.exists(folder_name):
    os.mkdir(folder_name)
    print("تم إنشاء المجلد")
else:
    print("المجلد موجود مسبقًا")

هذا الكود أفضل للمبتدئين لأنه يمنع ظهور خطأ عند تكرار تشغيل البرنامج.

إنشاء أكثر من مجلد باستخدام os.makedirs

إذا أردت إنشاء مسار يحتوي على أكثر من مجلد، مثل reports/2026/june، استخدم os.makedirs() بدل os.mkdir().

import os

os.makedirs("reports/2026/june", exist_ok=True)

print("تم إنشاء المسار بنجاح")

استخدمنا هنا exist_ok=True حتى لا يظهر خطأ إذا كان المجلد موجودًا مسبقًا.

متى أستخدم mkdir ومتى أستخدم makedirs؟ استخدم mkdir() لإنشاء مجلد واحد عندما يكون المجلد الأب موجودًا. واستخدم makedirs() عندما تريد إنشاء المجلدات الوسيطة المفقودة داخل مسار متعدد المستويات. {alertInfo}

حذف مجلد فارغ باستخدام os.rmdir

يمكنك حذف مجلد فارغ باستخدام os.rmdir().

import os

folder_name = "old_folder"

if os.path.exists(folder_name):
    os.rmdir(folder_name)
    print("تم حذف المجلد")
else:
    print("المجلد غير موجود")

لكن يجب الانتباه إلى نقطة مهمة: os.rmdir() يحذف المجلد فقط إذا كان فارغًا. إذا كان داخله ملفات أو مجلدات أخرى، سيظهر خطأ.

تحذير مهم: لا تجرب أوامر الحذف على مجلدات مهمة. أنشئ مجلدًا تجريبيًا أولًا حتى تفهم السلوك قبل تطبيقه على ملفاتك الحقيقية. {alertWarning}
بناء وفحص مسارات الملفات في بايثون باستخدام os.path.join و os.path.exists

تغيير اسم ملف أو مجلد باستخدام os.rename

يمكنك استخدام os.rename() لتغيير اسم ملف أو مجلد.

import os

old_name = "old.txt"
new_name = "new.txt"

if os.path.exists(old_name):
    os.rename(old_name, new_name)
    print("تم تغيير اسم الملف")
else:
    print("الملف القديم غير موجود")

هذا المثال يبحث عن ملف باسم old.txt، فإذا كان موجودًا يغير اسمه إلى new.txt. إذا كان الاسم الجديد موجودًا مسبقًا، فقد يختلف السلوك بين أنظمة التشغيل؛ لذلك افحص المسار الهدف أيضًا إذا كان استبدال الملفات غير مقصود.

حذف ملف باستخدام os.remove

لحذف ملف، نستخدم os.remove(). لاحظ أن هذا الأمر مخصص للملفات، وليس للمجلدات.

import os

file_name = "temp.txt"

if os.path.exists(file_name):
    os.remove(file_name)
    print("تم حذف الملف")
else:
    print("الملف غير موجود")

مرة أخرى: تعامل مع أوامر الحذف بحذر، خصوصًا إذا كنت تستخدم مسارات حقيقية.

مثال عملي: إنشاء مجلد results وحفظ ملف داخله

الآن سنجمع أكثر من فكرة معًا في مثال عملي بسيط. نريد إنشاء مجلد باسم results، ثم حفظ ملف نصي داخله.

import os

folder_name = "results"

if not os.path.exists(folder_name):
    os.mkdir(folder_name)

file_path = os.path.join(folder_name, "report.txt")

with open(file_path, "w", encoding="utf-8") as file:
    file.write("هذا تقرير تجريبي تم إنشاؤه باستخدام Python.")

print("تم إنشاء الملف داخل مجلد results")

في هذا المثال استخدمنا:

  • os.path.exists() لفحص وجود المجلد.
  • os.mkdir() لإنشاء المجلد إذا لم يكن موجودًا.
  • os.path.join() لبناء مسار الملف.
  • open() لإنشاء وكتابة ملف نصي.

إذا كنت تريد مراجعة التعامل مع الملفات، اقرأ درس شرح التعامل مع الملفات في Python للمبتدئين.

مثال عملي: عرض ملفات txt فقط داخل مجلد

لنفترض أن لديك مجلدًا يحتوي على ملفات كثيرة، وتريد عرض الملفات التي تنتهي بالامتداد .txt فقط.

import os

items = os.listdir()

for item in items:
    if os.path.isfile(item) and item.endswith(".txt"):
        print(item)

هذا المثال مفيد جدًا عندما تريد التعامل مع نوع محدد من الملفات فقط، مثل ملفات النصوص أو الصور أو ملفات CSV.

مثال عملي: عدّ عدد الملفات داخل مجلد

هذا مثال بسيط ومفيد: نريد حساب عدد الملفات فقط داخل المجلد الحالي، بدون احتساب المجلدات.

import os

count = 0

for item in os.listdir():
    if os.path.isfile(item):
        count += 1

print("عدد الملفات:", count)

هنا استخدمنا متغيرًا باسم count، وبدأناه من صفر، ثم زدناه بمقدار واحد كلما وجدنا ملفًا.

مثال عملي: تنظيم الملفات حسب الامتداد

هذا مثال أطول قليلًا، لكنه ممتاز لفهم الفائدة الحقيقية من مكتبة os. سنكتب برنامجًا يقرأ الملفات في المجلد الحالي، ثم يطبع نوع كل ملف حسب امتداده.

import os

for item in os.listdir():
    if os.path.isfile(item):
        name, extension = os.path.splitext(item)

        if extension == ".txt":
            print(item, "ملف نصي")
        elif extension == ".py":
            print(item, "ملف Python")
        elif extension == ".jpg" or extension == ".png":
            print(item, "صورة")
        else:
            print(item, "نوع آخر")

في هذا المثال استخدمنا os.path.splitext() لتقسيم اسم الملف إلى اسم الملف بدون الامتداد وامتداد الملف مثل .txt أو .py.

هذا المثال يكتفي بتصنيف الملفات وطباعتها. إذا أردت مشروعًا كاملًا ينقل الملفات فعليًا إلى مجلدات حسب النوع، راجع بايثون بالمثال 21: تنظيم الملفات تلقائيًا حسب النوع والامتداد باستخدام pathlib وshutil.

أهم دوال os للمبتدئين

الدالة وظيفتها مثال سريع
os.getcwd() معرفة المجلد الحالي الذي يعمل منه البرنامج os.getcwd()
os.chdir() تغيير مجلد العمل الحالي os.chdir("data")
os.listdir() عرض محتويات مجلد os.listdir()
os.walk() المرور على مجلد وكل المجلدات الفرعية داخله os.walk("data")
os.mkdir() إنشاء مجلد واحد os.mkdir("data")
os.makedirs() إنشاء مسار يحتوي على عدة مجلدات os.makedirs("a/b/c")
os.rmdir() حذف مجلد فارغ os.rmdir("old")
os.remove() حذف ملف os.remove("temp.txt")
os.rename() تغيير اسم ملف أو مجلد os.rename("old.txt", "new.txt")
os.path.exists() فحص وجود ملف أو مجلد os.path.exists("data")
os.path.join() بناء مسار صحيح os.path.join("data", "file.txt")
os.path.basename() استخراج اسم الملف أو آخر جزء من المسار os.path.basename(path)
os.path.dirname() استخراج مسار المجلد الأب os.path.dirname(path)
os.path.abspath() تحويل المسار إلى مسار مطلق os.path.abspath(path)
os.path.splitext() فصل اسم الملف عن الامتداد os.path.splitext("photo.jpg")
os.path.isfile() فحص هل المسار ملف os.path.isfile("main.py")
os.path.isdir() فحص هل المسار مجلد os.path.isdir("images")

الفرق بين os و pathlib

مكتبة os أوسع من مجرد المسارات؛ فهي توفر واجهات كثيرة مرتبطة بنظام التشغيل. أما pathlib فتركز على التعامل مع المسارات من خلال كائنات مثل Path، وغالبًا تجعل كود المسارات الحديث أكثر وضوحًا وقابلية للقراءة.

لذلك لا تحتاج إلى اعتبار إحداهما بديلًا كاملًا عن الأخرى. تعلّم أساسيات os لأنها شائعة ومهمة، لكن عندما يكون عملك الأساسي هو بناء المسارات وفحصها وقراءة الملفات، فمن المفيد أيضًا تعلم pathlib. يمكنك رؤية تطبيق عملي عليها في قراءة وكتابة ملفات CSV داخل مشروع Python منظم.

المقارنة os pathlib
الفكرة دوال للتعامل مع النظام والمسارات كائنات تمثل المسارات بطريقة منظمة
مناسب للمبتدئ؟ نعم، خاصة لفهم الأكواد المنتشرة نعم، لكنه يحتاج فهم فكرة الكائنات لاحقًا
الاستخدام الشائع مشاريع كثيرة وشروحات قديمة وحديثة أسلوب حديث ونظيف للتعامل مع المسارات

أخطاء شائعة عند استخدام مكتبة os

1. كتابة المسار يدويًا بطريقة غير مناسبة

من الأخطاء الشائعة أن تكتب المسار بهذه الطريقة:

file_path = "data\info.txt"

قد يسبب هذا مشاكل لأن الشرطة المائلة العكسية \ تدخل أيضًا في escape sequences داخل النصوص، وبعض التركيبات قد تتغير قيمتها أو تنتج تحذيرات. الأفضل بناء المسار من أجزائه:

import os

file_path = os.path.join("data", "info.txt")

2. حذف ملف أو مجلد بدون فحص

لا تستخدم أوامر الحذف مباشرة قبل التأكد من المسار:

# لا تفعل هذا بدون فهم المسار جيدًا
os.remove(file_path)

الأفضل:

if os.path.exists(file_path) and os.path.isfile(file_path):
    os.remove(file_path)

3. استخدام os.rmdir لحذف مجلد غير فارغ

os.rmdir() يحذف المجلد الفارغ فقط. إذا كان المجلد يحتوي على ملفات، سيظهر خطأ. لا تستخدم أوامر حذف متقدمة قبل فهمها جيدًا.

4. نسيان import os

إذا استخدمت os.getcwd() بدون استدعاء المكتبة، سيظهر خطأ مثل:

NameError: name 'os' is not defined

الحل:

import os

وإذا أردت فهم هذا الخطأ، راجع درس حل خطأ NameError name is not defined في بايثون.

مشروع صغير: برنامج فحص مجلد وعرض تقرير عنه

الآن سنبني مشروعًا بسيطًا يناسب المبتدئين. البرنامج سيقوم بالآتي:

  1. يعرف المجلد الحالي.
  2. يعرض عدد الملفات.
  3. يعرض عدد المجلدات.
  4. يطبع أسماء الملفات والمجلدات.
import os

current_folder = os.getcwd()
items = os.listdir()

files_count = 0
folders_count = 0

print("المجلد الحالي:", current_folder)
print("-" * 40)

for item in items:
    if os.path.isfile(item):
        files_count += 1
        print("ملف:", item)
    elif os.path.isdir(item):
        folders_count += 1
        print("مجلد:", item)

print("-" * 40)
print("عدد الملفات:", files_count)
print("عدد المجلدات:", folders_count)

هذا المشروع صغير، لكنه يجمع أهم الأفكار التي تعلمناها في الدرس. ويمكنك تطويره لاحقًا ليحفظ التقرير في ملف نصي، أو يعرض فقط ملفات امتداد معين، أو ينظم الملفات داخل مجلدات.

تمرين بسيط على مكتبة os

حاول تطبيق التمرين التالي بنفسك:

  1. أنشئ ملفًا باسم folder_report.py.
  2. استدع مكتبة os.
  3. اطبع المجلد الحالي باستخدام os.getcwd().
  4. اعرض محتويات المجلد باستخدام os.listdir().
  5. اطبع فقط الملفات التي تنتهي بالامتداد .py.
  6. أنشئ مجلدًا باسم reports إذا لم يكن موجودًا.

الحل المقترح:

import os

print("المجلد الحالي:", os.getcwd())

for item in os.listdir():
    if os.path.isfile(item) and item.endswith(".py"):
        print("ملف Python:", item)

if not os.path.exists("reports"):
    os.mkdir("reports")
    print("تم إنشاء مجلد reports")
else:
    print("مجلد reports موجود مسبقًا")

مصادر خارجية رسمية للتوسع

إذا أردت قراءة التوثيق الرسمي بعد فهم الأساسيات، يمكنك الرجوع إلى هذه المصادر:

الخلاصة

مكتبة os من أهم مكتبات Python القياسية التي يحتاجها أي مبتدئ عندما يبدأ في التعامل مع مشاريع حقيقية. فهي تساعدك على معرفة المجلد الحالي، عرض الملفات، إنشاء المجلدات، حذف الملفات، تغيير الأسماء، فحص وجود المسارات، وبناء مسارات صحيحة تعمل على أكثر من نظام تشغيل.

في البداية قد تبدو مكتبة os كثيرة التفاصيل، لكن لا تحتاج إلى حفظ كل شيء. ركز أولًا على الأوامر الأساسية: os.getcwd() و os.listdir() و os.path.exists() و os.path.join() و os.mkdir(). بعد ذلك ستفهم باقي الدوال بسهولة من خلال التطبيق العملي.

الخلاصة العملية: استخدم os عندما تريد أن يتعامل برنامجك مع نظام التشغيل والملفات والمجلدات، واستخدم os.path.join() أو pathlib لبناء المسارات بطريقة منظمة وقابلة للنقل بين الأنظمة. {alertSuccess}

أسئلة شائعة مع إجاباتها

هل أحتاج إلى تثبيت مكتبة os باستخدام pip؟

لا. مكتبة os من مكتبات Python القياسية، لذلك لا تحتاج إلى تثبيتها. فقط اكتب import os في أعلى ملف Python.

ما فائدة os.getcwd في Python؟

تستخدم os.getcwd() لمعرفة المجلد الحالي الذي يعمل منه البرنامج. هذا مفيد عند قراءة ملفات أو إنشاء ملفات داخل نفس مجلد المشروع.

ما الفرق بين os.listdir و os.getcwd؟

os.getcwd() تعرض مسار المجلد الحالي، أما os.listdir() فتعرض محتويات المجلد من ملفات ومجلدات.

ما الفرق بين os.listdir و os.walk؟

os.listdir() تعرض عناصر مجلد واحد، بينما os.walk() تمر على المجلد وكل المجلدات الفرعية داخله بشكل متكرر، وتعيد في كل مستوى root وdirs وfiles.

كيف أفحص هل الملف موجود في Python؟

يمكنك استخدام os.path.exists() لفحص وجود ملف أو مجلد. وإذا أردت التأكد أنه ملف تحديدًا، استخدم os.path.isfile().

كيف أنشئ مجلدًا في Python؟

استخدم os.mkdir("folder_name") لإنشاء مجلد واحد. وإذا أردت إنشاء مسار يحتوي على عدة مجلدات، استخدم os.makedirs().

هل يمكن حذف الملفات باستخدام مكتبة os؟

نعم، يمكن حذف ملف باستخدام os.remove()، وحذف مجلد فارغ باستخدام os.rmdir(). لكن يجب استخدام أوامر الحذف بحذر شديد.

ما الأفضل: os أم pathlib؟

كلاهما مفيد. مكتبة os مهمة جدًا لأنها منتشرة في كثير من الأكواد والشروحات، أما pathlib فهي أسلوب حديث ومريح للتعامل مع المسارات. للمبتدئ، فهم os أولًا يجعل الانتقال إلى pathlib أسهل.

إرسال تعليق

أحدث أقدم