استفاده از Glob برای فایلها در پایتون – مبانی پایتون
ماژول glob در پایتون ابزاری قدرتمند برای جستجو و یافتن فایلها و دایرکتوریها بر اساس الگوهای نامگذاری است. این ماژول به شما امکان میدهد تا به جای نوشتن کدهای پیچیده برای پیمایش سیستم فایل، از کاراکترهای wildcard برای تعریف الگوهای جستجو استفاده کنید. این مقاله به بررسی عمیق ماژول glob، نحوه استفاده از آن و کاربردهای مختلف آن در پایتون میپردازد.
مقدمهای بر ماژول Glob
ماژول glob بخشی از کتابخانه استاندارد پایتون است، بنابراین نیازی به نصب جداگانه ندارد. برای استفاده از آن، کافی است آن را با استفاده از دستور import glob وارد برنامه خود کنید. این ماژول بر اساس الگوهای یونیکس glob عمل میکند، که به شما امکان میدهد الگوهایی را تعریف کنید که با نام فایلها و دایرکتوریها مطابقت داشته باشند.
کاراکترهای Wildcard در Glob
glob از چند کاراکتر wildcard برای تعریف الگوهای جستجو استفاده میکند:
*: این کاراکتر با صفر یا چند کاراکتر مطابقت دارد. به عنوان مثال،*.txtبا تمام فایلهایی که پسوند.txtدارند مطابقت دارد.?: این کاراکتر با یک کاراکتر واحد مطابقت دارد. به عنوان مثال،file?.txtباfile1.txt،file2.txtو غیره مطابقت دارد.[ ]: این کاراکتر با هر یک از کاراکترهای داخل براکت مطابقت دارد. به عنوان مثال،file[123].txtباfile1.txt،file2.txtوfile3.txtمطابقت دارد.[! ]: این کاراکتر با هر کاراکتری که داخل براکت نیست مطابقت دارد. به عنوان مثال،file[!123].txtباfile4.txt،file5.txtو غیره مطابقت دارد.
تابع glob.glob()
تابع اصلی در ماژول glob، تابع glob() است. این تابع یک الگو به عنوان ورودی میگیرد و لیستی از تمام فایلها و دایرکتوریهایی که با آن الگو مطابقت دارند را برمیگرداند. مسیر ورودی میتواند یک مسیر مطلق یا نسبی باشد.
مثال:
import glob
# یافتن تمام فایلهای txt در دایرکتوری فعلی
files = glob.glob("*.txt")
print(files)
# یافتن تمام فایلهای png در دایرکتوری images
files = glob.glob("images/*.png")
print(files)
# یافتن تمام فایلهایی که با "report" شروع میشوند و پسوند "csv" دارند
files = glob.glob("report*.csv")
print(files)
تابع glob.iglob()
تابع iglob() مشابه تابع glob() است، اما به جای برگرداندن یک لیست کامل از فایلها، یک iterator برمیگرداند. این iterator به شما امکان میدهد تا فایلها را یکی یکی پردازش کنید، که میتواند برای فایلهای بزرگ یا تعداد زیادی فایل بسیار کارآمدتر باشد.
مثال:
import glob
# پردازش فایلهای txt به صورت یکی یکی
for filename in glob.iglob("*.txt"):
print(filename)
# انجام عملیات بر روی فایل
استفاده از glob برای یافتن دایرکتوریها
ماژول glob میتواند برای یافتن دایرکتوریها نیز استفاده شود. برای این کار، کافی است الگو را به گونهای تعریف کنید که با نام دایرکتوریها مطابقت داشته باشد.
مثال:
import glob
# یافتن تمام دایرکتوریهای با نام "data" در دایرکتوری فعلی
directories = glob.glob("data*")
print(directories)
استفاده از glob به صورت بازگشتی
به طور پیشفرض، glob فقط فایلها و دایرکتوریها را در دایرکتوری مشخص شده جستجو میکند. برای جستجوی بازگشتی در زیردایرکتوریها، میتوانید از کاراکتر ** استفاده کنید. این کاراکتر با صفر یا چند دایرکتوری مطابقت دارد.
توجه: برای استفاده از **، باید آرگومان recursive=True را به تابع glob() پاس دهید.
مثال:
import glob
# یافتن تمام فایلهای txt در دایرکتوری فعلی و تمام زیردایرکتوریها
files = glob.glob("**/*.txt", recursive=True)
print(files)
ترکیب الگوها و استفاده از os.path
میتوانید الگوهای glob را با توابع ماژول os.path ترکیب کنید تا جستجوهای پیچیدهتری انجام دهید. به عنوان مثال، میتوانید از os.path.join() برای ساختن مسیرهای فایل استفاده کنید و سپس از glob() برای یافتن فایلها در آن مسیرها استفاده کنید.
مثال:
import glob
import os
# ساختن مسیر دایرکتوری "data"
data_dir = os.path.join("data", "reports")
# یافتن تمام فایلهای csv در دایرکتوری "data/reports"
files = glob.glob(os.path.join(data_dir, "*.csv"))
print(files)
نکات مهم در استفاده از Glob
- حساسیت به حروف بزرگ و کوچک: رفتار
globدر مورد حساسیت به حروف بزرگ و کوچک به سیستم عامل شما بستگی دارد. در سیستمهای یونیکس (مانند لینوکس و macOS)، الگوها به حروف بزرگ و کوچک حساس هستند، در حالی که در ویندوز به طور پیشفرض به حروف بزرگ و کوچک حساس نیستند. - مسیرهای نسبی و مطلق: هنگام استفاده از مسیرهای نسبی،
globجستجو را از دایرکتوری فعلی شروع میکند. برای استفاده از مسیرهای مطلق، مسیر کامل فایل یا دایرکتوری را مشخص کنید. - خطاهای احتمالی: اگر الگو با هیچ فایلی مطابقت نداشته باشد،
glob()یک لیست خالی برمیگرداند.
کاربردهای عملی Glob
- پردازش دستهای فایلها:
globمیتواند برای یافتن تمام فایلهایی که نیاز به پردازش دارند استفاده شود. - ایجاد پشتیبان از فایلها: میتوانید از
globبرای یافتن تمام فایلهایی که باید پشتیبانگیری شوند استفاده کنید. - پاک کردن فایلهای موقت:
globمیتواند برای یافتن و حذف فایلهای موقت استفاده شود. - تست و دیباگ: میتوانید از
globبرای یافتن فایلهای تست و اجرای آنها استفاده کنید.
نتیجهگیری
ماژول glob ابزاری بسیار مفید و کارآمد برای کار با فایلها در پایتون است. با استفاده از کاراکترهای wildcard و توابع glob() و iglob()، میتوانید به راحتی فایلها و دایرکتوریها را بر اساس الگوهای نامگذاری جستجو و پردازش کنید. درک و استفاده از این ماژول میتواند به شما در نوشتن کدهای پایتون تمیزتر، خواناتر و کارآمدتر کمک کند.

بدون دیدگاه