ویدیو آموزش ماژول glob پایتون

امیرحسین بیگدلو June 2023

جستجو در فایل ها و دایرکتوری ها با کتابخانه glob پایتون

Glob یک اصطلاح کلی است که برای تعریف تکنیک هایی برای مطابقت با الگوهای مشخص شده با توجه به قوانین مربوط به شل یونیکس استفاده می شود. سیستم‌ها و پوسته‌های لینوکس و یونیکس نیز از glob پشتیبانی می‌کنند و همچنین تابع glob را در کتابخانه‌های سیستم ارائه می‌کنند.

 

در پایتون، از ماژول glob برای بازیابی فایل‌ها و دایرکتوری هایی که با الگویی خاص مطابق هستند استفاده می‌ شود. قوانین الگوی glob از قوانین استاندارد مسیر یونیکس پیروی می کنند. در ماژول glob میتوانید از کاراکترهای زیر استفاده کنید:

 

  • علامت * برای تطبیق همه کاراکترها
  • علامت ? فقط برای تطبیق یک کاراکتر
  • علامت های [ ] برای تطبیق محدوده ای از کاراکترها

 

 

تابع glob

تابع glob برای جستجو در فایل ها و دایرکتوری ها براساس الگویی خاص استفاده میشود. اگر الگو مشخص شده با هیچ فایل یا دایرکتوری مطابقت نداشته باشد یک لیست خالی برگشت داده خواهد شد. مسیری که در این تابع استفاده میکنید، میتوانید ثابت(absolute) یا نسبی(relative) باشد.

 

سینتکس این تابع به شکل زیر است:

glob.glob(pathname, *, root_dir=None, dir_fd=None, recursive=False)

 

در تابع glob فقط آرگومان pathname اجباری است و بقیه آرگومان ها اختیاری هستند. در مثال زیر تمام فایل ها و دایرکتوری هایی که در مسیر فعلی وجود دارند را پیدا میکند:

>>> glob.glob('*')
[ one.py, two.py, venv ]

 

تابع glob به صورت پیشفرض وارد دایرکتوری ها نخواهد شد اما اگر بخواهید در تمام دایرکتوری ها جستجو انجام دهید، میتوانید از recursive استفاده کنید. اما دقت کنید که برای جستجو در دایرکتوری های داخلی باید از دو ستاره استفاده کنید:

>>> glob.glob('**', recursive=True)
# LONG LIST OF ITEMS

 

ویدیو پیشنهادی: آموزش generator در پایتون

 

تابع iglob

از این تابع در زمانی استفاده کنید که حجم و تعداد فایل ها و دایرکتوری ها زیاد است. این تابع نتیجه را به شکل یک generator برگشت میدهد:

>>> result = glob.iglob('*')
>>> result
<generator object _iglob at 0x7f12f00c23b0>

 

حالا برای دسترسی به اطلاعات میتوانید از توابع next یا list استفاده کنید و یا generator را داخل یک حلقه بکار ببرید:

>>> next(result)
one.py
>>> next(result)
two.py
>>> next(result)
venv
>>> next(result)
StopIteration

 

ویدیوهای مشابه



آموزش NotImplemented در پایتون
امیرحسین بیگدلو

ارسال نظر


فعلا نظری برای نمایش وجود ندارد
مونگارد