لیستی از نام فایل ها و دایرکتوری ها را در پایتون دریافت کنید.

کسب و کار

برای دریافت لیستی از نام فایل ها و دایرکتوری ها (نام پوشه ها) در پایتون، از تابع ماژول os os.listdir() استفاده کنید.

os.listdir(path=’.’)
فهرستی حاوی نام ورودی در فهرست مشخص شده توسط مسیر را برمی گرداند.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

ماژول os در کتابخانه استاندارد گنجانده شده است و نیازی به نصب ندارد. با این حال، “واردات” مورد نیاز است.

اطلاعات زیر در اینجا ارائه شده است.

  • لیستی از نام فایل ها و دایرکتوری ها را دریافت کنید.
  • فقط لیستی از نام فایل ها را دریافت کنید
  • فقط لیستی از نام دایرکتوری ها را دریافت کنید

در زیر نمونه ای از ساختار فایل (دایرکتوری) آورده شده است.

.
└── testdir
    ├── dir1
    ├── dir2
    ├── file1
    ├── file2.txt
    └── file3.jpg

علاوه بر os.listdir()، می توانید از ماژول glob نیز برای دریافت لیستی از نام فایل ها و دایرکتوری ها (نام پوشه ها) استفاده کنید. glob به شما این امکان را می دهد که شرایط را با استفاده از حروف عام (*) و غیره مشخص کنید و به صورت بازگشتی فهرست های فرعی را شامل کنید.

در پایتون 3.4 و نسخه‌های بعدی، می‌توان فهرستی از فایل‌ها و دایرکتوری‌ها را با استفاده از ماژول pathlib دریافت کرد که می‌تواند مسیرها را به عنوان اشیا دستکاری کند. مانند گلوب های بالا، می توان آن را به صورت شرطی و بازگشتی نیز استفاده کرد.

لیستی از نام فایل ها و دایرکتوری ها را دریافت کنید.

اگر از 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']