بايثون: سرد وإضافة كافة الملفات من دليل إلى قائمة

بايثون: سرد وإضافة كافة الملفات من دليل إلى قائمة
Python

اكتشاف إدارة الملفات في بايثون

يعد العمل مع الدلائل والملفات مهمة شائعة في البرمجة. في بايثون، هناك عدة طرق لإدراج كافة الملفات داخل الدليل وتخزينها في قائمة لمزيد من المعالجة.

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

يأمر وصف
os.listdir(directory) إرجاع قائمة تحتوي على أسماء الإدخالات في الدليل المحدد.
os.path.isfile(path) التحقق مما إذا كان المسار المحدد هو ملف عادي موجود.
os.path.join(path, *paths) ينضم إلى مكون مسار واحد أو أكثر بذكاء، ويعيد مسارًا واحدًا.
Path(directory).iterdir() إرجاع مكرر لجميع الملفات والأدلة الفرعية في الدليل المحدد.
file.is_file() يُرجع True إذا كان المسار ملفًا عاديًا أو رابطًا رمزيًا لملف.
os.walk(directory) يُنشئ أسماء الملفات في شجرة الدليل، إما من أعلى إلى أسفل أو من أسفل إلى أعلى.

فهم اجتياز دليل بايثون

توضح البرامج النصية المذكورة أعلاه طرقًا مختلفة لسرد جميع الملفات في الدليل باستخدام Python. يستخدم البرنامج النصي الأول os الوحدة النمطية، وهي وحدة نمطية مضمنة في لغة Python توفر طريقة لاستخدام الوظائف المعتمدة على نظام التشغيل. باستخدام os.listdir(directory)يمكننا الحصول على قائمة بجميع الإدخالات في الدليل المحدد. ثم، من خلال تكرار هذه الإدخالات والتحقق من كل منها os.path.isfile(path)، يمكننا تصفية الدلائل وإلحاق الملفات فقط بقائمتنا. يستخدم البرنامج النصي الثاني pathlib الوحدة النمطية، والتي تقدم نهجًا أكثر توجهاً نحو الكائنات لمسارات نظام الملفات. باستخدام Path(directory).iterdir()، نحصل على مكرر لجميع الإدخالات في الدليل، ومن خلال تصفيتها باستخدام file.is_file()يمكننا جمع الملفات فقط.

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

إدراج الملفات في دليل باستخدام وحدة نظام التشغيل في Python

استخدام وحدة نظام التشغيل لاجتياز الدليل

import os

def list_files_os(directory):
    files = []
    for filename in os.listdir(directory):
        if os.path.isfile(os.path.join(directory, filename)):
            files.append(filename)
    return files

# Example usage
directory_path = '/path/to/directory'
files_list = list_files_os(directory_path)
print(files_list)

جلب محتويات الدليل باستخدام وحدة Pathlib الخاصة بـ Python

استخدام وحدة pathlib لقائمة الملفات

from pathlib import Path

def list_files_pathlib(directory):
    return [str(file) for file in Path(directory).iterdir() if file.is_file()]

# Example usage
directory_path = '/path/to/directory'
files_list = list_files_pathlib(directory_path)
print(files_list)

قائمة الملفات العودية مع os.walk

استخدام os.walk لاجتياز الدليل العودي

import os

def list_files_recursive(directory):
    files = []
    for dirpath, _, filenames in os.walk(directory):
        for filename in filenames:
            files.append(os.path.join(dirpath, filename))
    return files

# Example usage
directory_path = '/path/to/directory'
files_list = list_files_recursive(directory_path)
print(files_list)

تقنيات قائمة الملفات المتقدمة في بايثون

بخلاف الطرق الأساسية لإدراج الملفات في الدليل باستخدام os و pathlib الوحدات، هناك تقنيات أكثر تقدمًا يمكن استخدامها في المهام المتخصصة. إحدى هذه الطرق هي استخدام glob الوحدة النمطية، التي تبحث عن جميع أسماء المسارات المطابقة لنمط محدد وفقًا للقواعد المستخدمة في غلاف Unix. يمكن أن يكون هذا مفيدًا بشكل خاص لإدراج الملفات ذات امتدادات أو أنماط محددة. على سبيل المثال، باستخدام glob.glob('*.txt') سوف يسرد كافة الملفات النصية في الدليل الحالي. توفر هذه الطريقة طريقة مرنة لتصفية الملفات بناءً على أسمائها أو امتداداتها دون الحاجة إلى التكرار يدويًا عبر إدخالات الدليل.

تقنية متقدمة أخرى هي الاستفادة من fnmatch الوحدة النمطية، التي توفر وظائف لمقارنة أسماء الملفات مقابل أنماط الكرة الأرضية بنمط Unix. يمكن استخدام هذا بالتزامن مع os.listdir() أو pathlib لتصفية الملفات بناءً على أنماط أكثر تعقيدًا. على سبيل المثال، fnmatch.filter(os.listdir(directory), '*.py') سيُرجع قائمة بجميع ملفات Python في الدليل المحدد. بالإضافة إلى ذلك، بالنسبة لمجموعات البيانات الأكبر حجمًا أو التطبيقات المهمة للأداء، فإن استخدام scandir من os يمكن أن تكون الوحدة أكثر كفاءة من listdir لأنه يسترد سمات الملف مع أسماء الملفات، مما يقلل من عدد مكالمات النظام. يتيح فهم هذه التقنيات المتقدمة حلولاً أكثر قوة ومرونة لإدارة الملفات في Python.

الأسئلة المتداولة حول قائمة الدليل في بايثون

  1. كيف أقوم بإدراج جميع الملفات في الدليل وأدلته الفرعية؟
  2. يستخدم os.walk(directory) لاجتياز شجرة الدليل وسرد كافة الملفات.
  3. كيف يمكنني سرد ​​الملفات بامتداد معين؟
  4. يستخدم glob.glob('*.extension') أو fnmatch.filter(os.listdir(directory), '*.extension').
  5. ماهو الفرق بين os.listdir() و os.scandir()؟
  6. os.scandir() يعد أكثر كفاءة لأنه يسترد سمات الملف مع أسماء الملفات.
  7. هل يمكنني إدراج الملفات المخفية في الدليل؟
  8. نعم باستخدام os.listdir() سيتم سرد الملفات المخفية (تلك التي تبدأ بنقطة).
  9. كيف يمكنني استبعاد الدلائل من القائمة؟
  10. يستخدم os.path.isfile() أو file.is_file() مع pathlib لتصفية الملفات فقط.
  11. هل من الممكن فرز قائمة الملفات؟
  12. نعم يمكنك استخدام sorted() وظيفة في قائمة الملفات.
  13. كيف يمكنني التعامل مع الدلائل الكبيرة بكفاءة؟
  14. يستخدم os.scandir() للحصول على أداء أفضل مع الدلائل الكبيرة.
  15. هل يمكنني الحصول على حجم الملف وتاريخ التعديل؟
  16. نعم استخدم os.stat() أو Path(file).stat() لاسترداد البيانات الوصفية للملف.
  17. ما هي الوحدات الأفضل للتوافق عبر الأنظمة الأساسية؟
  18. ال pathlib يوصى باستخدام الوحدة النمطية لتحسين التوافق عبر الأنظمة الأساسية.
  19. كيف أقوم بإدراج الدلائل فقط؟
  20. يستخدم os.path.isdir() أو Path(file).is_dir() لتصفية الدلائل.

اختتام قائمة الدليل في بايثون

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