للحصول على قائمة بأسماء الملفات والدليل (أسماء المجلدات) في بايثون ، استخدم وظيفة الوحدة النمطية os.listdir ().
os.listdir(path=’.’)
إرجاع قائمة تحتوي على أسماء الإدخال في الدليل المحدد بواسطة المسار.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
يتم تضمين وحدة نظام التشغيل في المكتبة القياسية ولا تحتاج إلى التثبيت. ومع ذلك ، “الاستيراد” مطلوب.
يتم توفير المعلومات التالية هنا.
- احصل على قائمة بأسماء الملفات والدليل.
- احصل على قائمة بأسماء الملفات فقط
- احصل على قائمة بأسماء الدلائل فقط
فيما يلي مثال على بنية ملف (دليل).
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
بالإضافة إلى os.listdir () ، يمكنك أيضًا استخدام وحدة glob للحصول على قائمة بأسماء الملفات والدليل (أسماء المجلدات). يسمح لك glob بتحديد الشروط باستخدام أحرف البدل (*) ، وما إلى ذلك ، ويتضمن الدلائل الفرعية بشكل متكرر.
في Python 3.4 والإصدارات الأحدث ، من الممكن أيضًا الحصول على قائمة بالملفات والأدلة باستخدام وحدة pathlib ، والتي يمكنها معالجة المسارات ككائنات. مثل globs أعلاه ، يمكن أيضًا استخدامه بشكل مشروط ومتكرر.
احصل على قائمة بأسماء الملفات والدليل.
إذا استخدمت os.listdir () كما هو ، فسيعيد لك قائمة بأسماء الملفات والدليل.
import os path = "./testdir" files = os.listdir(path) print(type(files)) # <class 'list'> print(files) # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']
ما تحصل عليه هو قائمة سلاسل المسار.
احصل على قائمة بأسماء الملفات فقط
إذا كنت تريد الحصول على قائمة بأسماء الملفات فقط ، فاستخدم الدالة os.path.isfile () لتحديد ما إذا كان المسار عبارة عن ملف. تمرير اسم الملف فقط لأن وسيطة الدالة os.path.isfile () لن تعمل ، لذلك قم بتمرير المسار الكامل كما هو موضح أدناه.os.path.isfile(os.path.join(path, f))
files = os.listdir(path) files_file = [f for f in files if os.path.isfile(os.path.join(path, f))] print(files_file) # ['file1', 'file2.txt', 'file3.jpg']
احصل على قائمة بأسماء الدلائل فقط
إذا كنت ترغب في الحصول على قائمة بأسماء الدلائل فقط ، فاستخدم () os.path.isdir بنفس الطريقة.
files = os.listdir(path) files_dir = [f for f in files if os.path.isdir(os.path.join(path, f))] print(files_dir) # ['dir1', 'dir2']