استفاده از pathlib در پایتون: مبانی کار با مسیرها
در پایتون، کار با مسیر فایلها و دایرکتوریها بخش مهمی از بسیاری از برنامهها است. به طور سنتی، ما از ماژول os.path برای این منظور استفاده میکردیم. با این حال، ماژول pathlib که در پایتون 3.4 معرفی شد، رویکردی مدرنتر، شیءگرا و خواناتر برای کار با مسیرها ارائه میدهد. این مقاله به بررسی عمیق pathlib میپردازد و نشان میدهد که چگونه میتواند کد شما را سادهتر و قابلفهمتر کند. این آموزش در دسته بندی ‘مبانی پایتون’ قرار میگیرد و برای برنامهنویسان مبتدی و متوسط پایتون مناسب است.
چرا pathlib؟
os.path مجموعهای از توابع است که برای دستکاری رشتههای مسیر استفاده میشود. این روش میتواند کمی دست و پا گیر و مستعد خطا باشد، به خصوص هنگام کار با مسیرهای پیچیده. pathlib با ارائه اشیاء Path، این مشکلات را برطرف میکند. این اشیاء به شما امکان میدهند مسیرها را به عنوان اشیاء واقعی در نظر بگیرید و از روشهای شیءگرا برای دستکاری آنها استفاده کنید.
مزایای استفاده از pathlib عبارتند از:
- خوانایی بیشتر: کد شما واضحتر و قابلفهمتر میشود.
- شیءگرایی: استفاده از روشهای شیءگرا به جای توابع.
- سازگاری با سیستم عامل:
pathlibبه طور خودکار با سیستم عاملهای مختلف (ویندوز، macOS، لینوکس) سازگار میشود. - امنیت بیشتر: کاهش احتمال خطاهای مربوط به دستکاری رشتههای مسیر.
آشنایی با کلاس Path
pathlib بر اساس کلاس Path ساخته شده است. برای استفاده از آن، ابتدا باید آن را از ماژول pathlib وارد کنید:
from pathlib import Path
سپس میتوانید یک شیء Path ایجاد کنید که نشاندهنده یک مسیر فایل یا دایرکتوری است:
path = Path('my_directory/my_file.txt')
این شیء Path اکنون حاوی اطلاعات مربوط به مسیر ‘my_directory/my_file.txt’ است. توجه داشته باشید که این مسیر میتواند مطلق یا نسبی باشد.
ایجاد و دستکاری مسیرها
pathlib روشهای مختلفی برای ایجاد و دستکاری مسیرها ارائه میدهد. در اینجا چند نمونه آورده شده است:
Path.cwd(): مسیر دایرکتوری کاری فعلی را برمیگرداند.Path.home(): مسیر دایرکتوری home کاربر را برمیگرداند.Path.joinpath(): دو یا چند مسیر را به هم متصل میکند.Path.parent: مسیر دایرکتوری والد را برمیگرداند.Path.name: نام فایل یا دایرکتوری را برمیگرداند.Path.suffix: پسوند فایل را برمیگرداند.Path.stem: نام فایل بدون پسوند را برمیگرداند.
مثال:
from pathlib import Path
path = Path('my_directory/my_file.txt')
print(path.parent) # خروجی: my_directory
print(path.name) # خروجی: my_file.txt
print(path.suffix) # خروجی: .txt
print(path.stem) # خروجی: my_file
new_path = path.joinpath('another_directory')
print(new_path) # خروجی: my_directory/my_file.txt/another_directory
بررسی وجود فایل یا دایرکتوری
pathlib روشهای مختلفی برای بررسی وجود فایلها و دایرکتوریها ارائه میدهد:
Path.exists(): بررسی میکند که آیا فایل یا دایرکتوری وجود دارد یا خیر.Path.is_file(): بررسی میکند که آیا مسیر به یک فایل اشاره دارد یا خیر.Path.is_dir(): بررسی میکند که آیا مسیر به یک دایرکتوری اشاره دارد یا خیر.
مثال:
from pathlib import Path
path = Path('my_directory/my_file.txt')
if path.exists():
print("فایل یا دایرکتوری وجود دارد.")
else:
print("فایل یا دایرکتوری وجود ندارد.")
if path.is_file():
print("این یک فایل است.")
elif path.is_dir():
print("این یک دایرکتوری است.")
else:
print("این نه فایل است و نه دایرکتوری.")
خواندن و نوشتن فایلها
pathlib روشهای سادهای برای خواندن و نوشتن فایلها ارائه میدهد:
Path.read_text(): محتوای یک فایل را به صورت رشته میخواند.Path.write_text(): یک رشته را در یک فایل مینویسد.Path.read_bytes(): محتوای یک فایل را به صورت بایت میخواند.Path.write_bytes(): بایتها را در یک فایل مینویسد.
مثال:
from pathlib import Path
path = Path('my_directory/my_file.txt')
# نوشتن در فایل
path.write_text("این محتوای فایل است.")
# خواندن از فایل
content = path.read_text()
print(content) # خروجی: این محتوای فایل است.
کار با دایرکتوریها
pathlib روشهای مختلفی برای کار با دایرکتوریها ارائه میدهد:
Path.mkdir(): یک دایرکتوری جدید ایجاد میکند.Path.rmdir(): یک دایرکتوری خالی را حذف میکند.Path.iterdir(): یک ژنراتور را برمیگرداند که روی تمام فایلها و دایرکتوریهای موجود در دایرکتوری تکرار میشود.Path.glob(): فایلها و دایرکتوریهایی را که با یک الگوی خاص مطابقت دارند، پیدا میکند.
مثال:
from pathlib import Path
path = Path('my_directory')
# ایجاد دایرکتوری
path.mkdir(exist_ok=True) # اگر دایرکتوری از قبل وجود داشته باشد، خطا ایجاد نمیشود.
# یافتن تمام فایلهای .txt در دایرکتوری
for file in path.glob('*.txt'):
print(file)
# تکرار روی تمام فایلها و دایرکتوریها
for item in path.iterdir():
print(item)
مسیرهای مطلق و نسبی
pathlib به طور خودکار مسیرهای مطلق و نسبی را مدیریت میکند. میتوانید از Path.resolve() برای تبدیل یک مسیر نسبی به یک مسیر مطلق استفاده کنید:
from pathlib import Path
path = Path('my_directory/my_file.txt')
absolute_path = path.resolve()
print(absolute_path) # خروجی: /path/to/my_directory/my_file.txt (بسته به سیستم عامل)
نتیجهگیری
pathlib یک ماژول قدرتمند و انعطافپذیر برای کار با مسیرها در پایتون است. با استفاده از pathlib، میتوانید کد خود را سادهتر، خواناتر و قابلفهمتر کنید. این ماژول به ویژه برای پروژههایی که نیاز به دستکاری گسترده فایلها و دایرکتوریها دارند، مفید است. امیدوارم این مقاله به شما در درک و استفاده از pathlib کمک کرده باشد.

بدون دیدگاه