آموزش پایتون - دایرکتوری‌ها

دایرکتوری‌ها در پایتون

در پایتون، دایرکتوری‌ها که در سیستم‌عامل‌ها معمولاً با نام پوشه شناخته می‌شوند، مکان‌هایی در سیستم فایل هستند که برای ذخیره فایل‌ها و دایرکتوری‌های دیگر استفاده می‌شوند. آن‌ها امکان گروه‌بندی و مدیریت فایل‌ها را به‌صورت سلسله‌مراتبی فراهم می‌کنند.

پایتون چندین ماژول، به‌ویژه os و os.path و همچنین shutil را ارائه می‌دهد که به شما امکان می‌دهند عملیات مختلفی را روی دایرکتوری‌ها انجام دهید.

این عملیات شامل ایجاد دایرکتوری‌های جدید، پیمایش دایرکتوری‌های موجود، فهرست کردن محتویات دایرکتوری، تغییر دایرکتوری کاری فعلی و حذف دایرکتوری‌ها می‌شود.

بررسی وجود یک دایرکتوری

پیش از انجام عملیات روی یک دایرکتوری، معمولاً لازم است بررسی کنید که آیا وجود دارد یا خیر. در پایتون می‌توانیم با استفاده از تابع os.path.exists() بررسی کنیم که یک دایرکتوری وجود دارد یا نه.

این تابع یک آرگومان می‌پذیرد که رشته‌ای نشان‌دهنده یک مسیر در سیستم فایل است. این آرگومان می‌تواند یکی از موارد زیر باشد:

  • مسیر نسبی − مسیری که نسبت به دایرکتوری کاری فعلی تعریف می‌شود.

  • مسیر مطلق − یک مسیر کامل که از دایرکتوری ریشه شروع می‌شود.

مثال

در این مثال، با استفاده از تابع os.path.exists() بررسی می‌کنیم که آیا مسیر دایرکتوری داده‌شده وجود دارد یا خیر:

import os

directory_path = "D:\\Test\\MyFolder\\"

if os.path.exists(directory_path):
   print(f"The directory '{directory_path}' exists.")
else:
   print(f"The directory '{directory_path}' does not exist.")

خروجی کد بالا به این صورت است:

The directory 'D:\\Test\\MyFolder\\' exists.

ایجاد یک دایرکتوری

برای ایجاد یک دایرکتوری جدید در پایتون، از تابع os.makedirs() استفاده می‌کنید. این تابع در صورت وجود نداشتن دایرکتوری‌های میانی، آن‌ها را نیز ایجاد می‌کند.

تابع os.makedirs() مسیری را که می‌خواهید ایجاد کنید، به‌عنوان آرگومان می‌پذیرد. همچنین می‌توانید به‌صورت اختیاری آرگومان "mode" را به آن بدهید که مجوزهای دسترسی دایرکتوری‌های تازه ایجادشده را مشخص می‌کند. این آرگومان یک عدد صحیح است که در قالب مبنای هشت نمایش داده می‌شود (برای مثال، 0o755). اگر این آرگومان مشخص نشود، مجوزهای پیش‌فرض بر اساس تنظیم umask سیستم شما استفاده خواهند شد.

مثال

در مثال زیر، با استفاده از تابع os.makedirs() یک دایرکتوری جدید ایجاد می‌کنیم:

import os

new_directory = "new_dir.txt"

try:
   os.makedirs(new_directory)
   print(f"Directory '{new_directory}' created successfully.")
except OSError as e:
   print(f"Error: Failed to create directory '{new_directory}'. {e}")

پس از اجرای کد بالا، خروجی زیر را دریافت می‌کنیم:

Directory 'new_dir.txt' created successfully.

متد mkdir()

می‌توانید از متد mkdir() در ماژول os برای ایجاد دایرکتوری در دایرکتوری فعلی استفاده کنید. برای استفاده از این متد، باید آرگومانی شامل نام دایرکتوری موردنظر برای ایجاد را به آن بدهید.

در ادامه، ساختار نحوی متد mkdir() در پایتون را مشاهده می‌کنید:

os.mkdir("newdir")

مثال

در مثال زیر، یک دایرکتوری به نام test در دایرکتوری فعلی ایجاد می‌کنیم:

import os

# Create a directory "test"
os.mkdir("test")
print ("Directory created successfully")

نتیجه به‌دست‌آمده به شکل زیر است:

Directory created successfully

دریافت دایرکتوری کاری فعلی

برای به‌دست‌آوردن دایرکتوری کاری فعلی در پایتون، می‌توانید از تابع os.getcwd() استفاده کنید. این تابع رشته‌ای را برمی‌گرداند که نشان‌دهنده دایرکتوری کاری فعلی است؛ یعنی دایرکتوری‌ای که اسکریپت پایتون در آن اجرا می‌شود.

ساختار نحوی

در ادامه، ساختار نحوی پایه تابع getcwd() در پایتون را مشاهده می‌کنید:

os.getcwd()

مثال

در مثال زیر، با استفاده از تابع getcwd() دایرکتوری کاری فعلی را نمایش می‌دهیم:

import os

current_directory = os.getcwd()
print(f"Current working directory: {current_directory}")

خروجی به شکل زیر خواهد بود:

Current working directory: /home/cg/root/667ba7570a5b7

فهرست کردن فایل‌ها و دایرکتوری‌ها

می‌توانید با استفاده از تابع os.listdir() محتویات یک دایرکتوری را فهرست کنید. این تابع فهرستی از تمام فایل‌ها و دایرکتوری‌های موجود در مسیر دایرکتوری مشخص‌شده را برمی‌گرداند.

مثال

در مثال زیر، با استفاده از تابع listdir() محتویات مسیر دایرکتوری مشخص‌شده را فهرست می‌کنیم:

import os

directory_path = r"D:\MyFolder\Pictures"

try:
   contents = os.listdir(directory_path)
   print(f"Contents of '{directory_path}':")
   for item in contents:
      print(item)
except OSError as e:
   print(f"Error: Failed to list contents of directory '{directory_path}'. {e}")

خروجی کد بالا به شکل زیر است:

Contents of 'D:\MyFolder\Pictures':
Camera Roll
desktop.ini
Saved Pictures
Screenshots

تغییر دایرکتوری کاری فعلی

می‌توانید با استفاده از متد chdir() دایرکتوری فعلی را تغییر دهید. این متد آرگومانی می‌پذیرد که نام دایرکتوری موردنظر شما برای تبدیل شدن به دایرکتوری فعلی است.

ساختار نحوی

در ادامه، ساختار نحوی متد chdir() در پایتون را مشاهده می‌کنید:

os.chdir("newdir")

مثال

در مثال زیر، با استفاده از متد chdir() دایرکتوری فعلی را به Desktop تغییر می‌دهیم:

import os

new_directory = r"D:\MyFolder\Pictures"

try:
    os.chdir(new_directory)
    print(f"Current working directory changed to '{new_directory}'.")
except OSError as e:
    print(f"Error: Failed to change working directory to '{new_directory}'. {e}")

خروجی به شکل زیر خواهد بود:

Current working directory changed to 'D:\MyFolder\Pictures'.

حذف یک دایرکتوری

برای حذف یک دایرکتوری خالی در پایتون، می‌توانید از متد os.rmdir() استفاده کنید. اگر دایرکتوری حاوی فایل‌ها یا دایرکتوری‌های دیگری باشد، می‌توانید از متد shutil.rmtree() برای حذف بازگشتی آن استفاده کنید.

ساختار نحوی

در ادامه، ساختار نحوی پایه برای حذف یک دایرکتوری در پایتون را مشاهده می‌کنید:

os.rmdir(directory_path)
# or
shutil.rmtree(directory_path)

مثال

در مثال زیر، با استفاده از متد os.rmdir() یک دایرکتوری خالی را حذف می‌کنیم:

import os
directory_path = r"D:\MyFolder\new_dir"

try:
   os.rmdir(directory_path)
   print(f"Directory '{directory_path}' successfully removed.")
except OSError as e:
   print(f"Error: Failed to remove directory '{directory_path}'. {e}")

خروجی زیر تولید خواهد شد:

Directory 'D:\MyFolder\new_dir' successfully removed.

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.