من المحتمل جدًا أننا واجهنا العديد من الحالات في حياتنا حيث نريد معرفة عدد الملفات الموجودة في الدليل (المجلد) وما هي الملفات. أو، في بعض الأحيان يتعين علينا البحث عن ملف، ونعرف اسمه، ولكننا لا نعرف في أي مجلد يوجد هذا الملف. في هذه الحالة، الخيار الوحيد المتبقي لنا هو البحث عن الملف في دليل الوجهة.
الآن، قد يبدو الأمر سهلاً للغاية بالنسبة للكثيرين منا أن يفكروا؛ علينا فقط أن نذهب إلى الدليل وننظر هناك. يعد هذا خيارًا ممكنًا، ولكن هذا الخيار لن يعمل إلا عندما يكون لدينا عدد أقل من الملفات الموجودة في هذا الدليل. عندها فقط يمكننا زيارة هذا الدليل يدويًا والبحث عن الملفات الموجودة هناك. ولكن، ماذا في حالة وجود عدد كبير من الملفات، دعنا نقول فقط آلاف الملفات الموجودة في الدليل الوجهة. في هذه الحالة، لن يعمل هذا الخيار لأنه سيستغرق وقتًا طويلاً جدًا (حتى عدة أيام) للبحث عما إذا كان هناك ملف معين موجود في الدليل الوجهة حيث توجد آلاف الملفات. يبدو أن ما يجب علينا فعله إذا كان علينا العثور على ملف باسمه داخل دليل يحتوي على آلاف الملفات.
يمكننا البحث عن الاسم من خلال مستكشف الملفات، ولكن إذا فعلنا ذلك، فسوف يستغرق الأمر أيضًا الكثير من الوقت، ليس كما في الخيار السابق ولكن نعم، الكثير من الوقت. وذلك لأن مستكشف الملفات سيقوم بفحص كل ملف موجود في الدليل، وعلينا أن ننتظر كثيرًا حتى يتم الفحص الكامل للقرص.
ولكن ماذا لو قلنا أننا قدمنا بالفعل أسماء جميع الملفات الموجودة في الدليل أو المسار الوجهة. بعد ذلك، سيكون من السهل جدًا علينا التحقق مما إذا كان هذا الملف المحدد موجودًا في المسار المستهدف، كما يوضح أيضًا المكان الذي نحتاج فيه للحصول على أسماء جميع الملفات الموجودة في الدليل الوجهة.
إذا حصلنا على قائمة بأسماء جميع الملفات الموجودة في الدليل في شكل نص، فما علينا سوى كتابة اسم هذا الملف المحدد في شريط البحث. وبعد ذلك، لن يستغرق الأمر سوى ثانية واحدة لمعرفة ما إذا كان الملف موجودًا في قائمة الأسماء أم لا. وبالتالي، يمكننا أن نفهم مدى أهمية وجود طريقة يمكننا من خلالها طباعة قائمة بأسماء جميع الملفات الموجودة في الدليل أو المسار.
تزودنا بايثون بمثل هذه الأساليب التي يمكننا من خلالها طباعة قائمة الأسماء، وإحدى هذه الطرق هي وظيفة listdir() في الوحدة النمطية 'os'. سنتعلم طريقة listdir() هذه في هذا البرنامج التعليمي وسنستخدمها في برنامج Python لطباعة قائمة بأسماء جميع الملفات الموجودة في المسار المحدد.
متى ينتهي Q1
طريقة os.listdir() في بايثون
وظيفة listdir() هي وظيفة توفرها وحدة نظام التشغيل، وباستخدام هذه الوظيفة يمكننا طباعة قائمة بأسماء جميع الملفات الموجودة في المسار المحدد. يمكن أيضًا استخدام طريقة listdir() إذا أردنا طباعة قائمة الملفات الموجودة في دليل العمل الحالي (حيث يوجد البرنامج). يمكننا استخدام طريقة listdir() عندما يُطلب منا الحصول على أسماء جميع الملفات الموجودة في دليل محدد.
بناء جملة الدالة os.listdir():
فيما يلي بناء الجملة لاستخدام الدالة listdir() من وحدة نظام التشغيل:
>> os.listdir(pathSpecified)
حدود:
كما نرى في الصيغة المذكورة أعلاه، فقد قدمنا فقط وسيطة داخل طريقة listdir(). تأخذ الدالة listdir() معلمة المسار التالية:
نوع الإرجاع:
نوع الإرجاع لوظيفة listdir() هو 'list' لأنه يُرجع قائمة بأسماء جميع الملفات الموجودة في الدليل المحدد.
os.listdir() الطريقة: التنفيذ:
لفهم عمل الدالة listdir() وتنفيذها، سنستخدمها في برنامج مثال ونطبع قائمة أسماء الملفات منه. لقد قمنا بتقسيم جزء التنفيذ لوظيفة listdir() إلى الجزأين التاليين:
- طباعة أسماء الملفات من دليل العمل الحالي
- طباعة أسماء الملفات من المسار المحدد
سوف نستخدم برنامجًا نموذجيًا لكل فئة ونحصل على أسماء الملفات في كل طريقة.
الطريقة الأولى: طباعة أسماء الملفات من دليل العمل الحالي:
في هذه الطريقة، سنقوم بطباعة قائمة أسماء الملفات من دليل العمل الحالي باستخدام وظيفة أخرى من وحدة نظام التشغيل، أي وظيفة getcwd(). انظر إلى البرنامج النموذجي التالي لفهم تنفيذ هذه الطريقة:
مثال 1:
انظر إلى برنامج Python التالي حيث استخدمنا طريقة os.listdir() مع وسيطة المسار:
# Import os module import os # Use getcwd() function pathSpecified = os.getcwd() # Using listdir() function listOfFileNames = os.listdir(pathSpecified) # Print the name of all files in the current working directory print('Following is the list of names of all the files present in the current working directory: ') print(listOfFileNames)
انتاج:
Following is the list of names of all the files present in the current working directory: ['.ipynb_checkpoints', '1510981730952-33afef2b-eb41-4592-8d3f-bd3e19932d36_.pdf', '1510981730952-33afef2b-eb41-4592-8d3f-bd3e19932d36__19.webp', '1527589430558.webp', '1605467180870.webp', '1605467180879.webp', '160591-fruit-template-16x9.pptx', '1613034967066.webp', '1613034967083.webp', '1613035079325.webp', '1613035270313.webp', '1616159417742.webp', '1616159417758.webp', ???., Windows11InstallationAssistant.exe', 'WindowsPCHealthCheckSetup.msi', 'Word frequency Python.edited.docx', 'wrong.webp', 'X-ray image.webp', 'XML-data.xml', 'yemen500.webp', 'zambia-500.webp', 'zimbabwe-500.webp', 'ZoomInstaller (1).exe', 'ZoomInstaller.exe', '__pycache__', '~$EOC CERTIFICATE.pptx']
كما نرى، تتم طباعة أسماء جميع الملفات الموجودة في دليل العمل الحالي لدينا في مخرجات البرنامج.
الانضمام إلى سلسلة جافا
توضيح:
بعد استيراد وحدة نظام التشغيل في البرنامج، استخدمنا الدالة getcwd() للحصول على مسار دليل العمل الحالي. لقد قمنا بتهيئة متغير بالاسم 'pathSpecified' وقمنا بتخزين مسار دليل العمل الحالي في هذا المتغير. بعد ذلك، استخدمنا الدالة listdir() في متغير آخر تمت تهيئته، أي listOfFileNames، لتخزين أسماء جميع الملفات في هذا المتغير. لقد قدمنا متغيرًا مهيأً لمسار العمل الحالي كوسيطة في الدالة listdir()، وأخيرًا، قمنا بطباعة قائمة بجميع الأسماء في المخرجات باستخدام عبارة الطباعة.
إذا لم نرغب في استخدام أي وظيفة أخرى في برنامجنا، فيمكننا أيضًا الحصول على جميع أسماء الملفات من الدليل الحالي الذي يوجد فيه البرنامج. علينا فقط ترك وظيفة listdir() بدلاً من توفير مسار أي دليل كوسيطة، وبعد ذلك، سيعطي البرنامج، عند تنفيذه، قائمة بجميع الأسماء الموجودة في الدليل الحالي كنتيجة للمخرجات. انظر إلى البرنامج النموذجي التالي لفهم تنفيذ هذه الطريقة:
مثال 2:
انظر إلى برنامج Python التالي حيث استخدمنا طريقة os.listdir() بدون أي وسيطة:
# Import os module import os # Using listdir() function listOfFileNames = os.listdir() # Print the name of all files in the current working directory print('Following is the list of names of all the files present in the current working directory: ') print(listOfFileNames)
انتاج:
Following is the list of names of all the files present in the current working directory: ['.ipynb_checkpoints', '1510981730952-33afef2b-eb41-4592-8d3f-bd3e19932d36_.pdf', '1510981730952-33afef2b-eb41-4592-8d3f-bd3e19932d36__19.webp', '1527589430558.webp', '1605467180870.webp', '1605467180879.webp', '160591-fruit-template-16x9.pptx', '1613034967066.webp', '1613034967083.webp', '1613035079325.webp', '1613035270313.webp', '1616159417742.webp', '1616159417758.webp', ???., Windows11InstallationAssistant.exe', 'WindowsPCHealthCheckSetup.msi', 'Word frequency Python.edited.docx', 'wrong.webp', 'X-ray image.webp', 'XML-data.xml', 'yemen500.webp', 'zambia-500.webp', 'zimbabwe-500.webp', 'ZoomInstaller (1).exe', 'ZoomInstaller.exe', '__pycache__', '~$EOC CERTIFICATE.pptx']
كما نرى، تتم طباعة قائمة بأسماء جميع الملفات الموجودة في الملف الحالي حيث تم تثبيت بايثون في الإخراج بعد تنفيذ البرنامج.
خصائص الحمض في dbms
توضيح:
في هذا البرنامج، قمنا بحذف معلمة المسار وما زلنا نحصل على قائمة بأسماء جميع الملفات الموجودة في دليل العمل الحالي. نفضل استخدام هذه الطريقة إذا أردنا الحصول على قائمة بأسماء جميع الملفات من دليل العمل الحالي. لأنه في هذه الطريقة، لا يتعين علينا استخدام أي وسيطة أو تحديد أي متغير مسار، وبالتالي فهي تحفظ أي سطر إضافي من التعليمات البرمجية في برنامجنا وتوفر وقتنا.
الطريقة الثانية: طباعة أسماء الملفات من المسار المحدد:
في هذه الطريقة، يمكننا الحصول على قائمة بأسماء جميع الملفات الموجودة في دليل محدد عن طريق توفير المسار المحدد للدليل داخل وظيفة listdir(). يمكننا الحصول على مسار الدليل من خيار خصائص الملف، ومن ثم يمكننا استخدام نفس الملف في البرنامج. انظر إلى البرنامج النموذجي التالي لفهم تنفيذ هذه الطريقة:
مثال 3:
انظر إلى برنامج Python التالي حيث استخدمنا طريقة os.listdir() مع وسيطة المسار:
# Import os module import os # Define the specified path pathSpecified = ' C:UsersManishDownloads' # Using listdir() function listOfFileNames = os.listdir(pathSpecified) # Print the name of all files in directory print('Following is the list of names of all the files present in the specified directory: ') print(listOfFileNames)
انتاج:
Following is the list of names of all the files present in the specified directory: ['.ipynb_checkpoints', '1510981730952-33afef2b-eb41-4592-8d3f-bd3e19932d36_.pdf', '1510981730952-33afef2b-eb41-4592-8d3f-bd3e19932d36__19.webp', '1527589430558.webp', '1605467180870.webp', '1605467180879.webp', '160591-fruit-template-16x9.pptx', '1613034967066.webp', '1613034967083.webp', '1613035079325.webp', '1613035270313.webp', '1616159417742.webp', '1616159417758.webp', ........, Windows11InstallationAssistant.exe', 'WindowsPCHealthCheckSetup.msi', 'Word frequency Python.edited.docx', 'wrong.webp', 'X-ray image.webp', 'XML-data.xml', 'yemen500.webp', 'zambia-500.webp', 'zimbabwe-500.webp', 'ZoomInstaller (1).exe', 'ZoomInstaller.exe', '__pycache__', '~$EOC CERTIFICATE.pptx']
كما نرى، تتم طباعة أسماء جميع الملفات الموجودة في الدليل المحدد في مخرجات البرنامج.
توضيح:
بعد استيراد وحدة نظام التشغيل في البرنامج، قمنا أولاً بتحديد مسار الدليل الذي نريد طباعة قائمة بجميع أسماء الملفات منه عن طريق تهيئة متغير المسار. بعد ذلك، استخدمنا متغير المسار الذي تمت تهيئته داخل طريقة listdir() لاستخدام المسار كوسيطة في الوظيفة. وأخيرًا، استخدمنا متغيرًا آخر تمت تهيئته (listOfFileNames) داخل عبارة الطباعة لطباعة النتيجة في الإخراج.
خاتمة
لقد تعرفنا على طريقة listdir() لوحدة نظام التشغيل في هذا البرنامج التعليمي وفهمنا أهمية هذه الوظيفة. نتعرف على بناء جملة هذه الوظيفة، وبعد ذلك نتعلم طرق استخدام هذه الوظيفة. أخيرًا، استخدمنا برنامج Python مع الدالة listdir() لفهم كيفية تنفيذ كل طريقة.