احصل على قائمة بأسماء الملفات والدليل في بايثون.

اعمال

للحصول على قائمة بأسماء الملفات والدليل (أسماء المجلدات) في بايثون ، استخدم وظيفة الوحدة النمطية 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']