مدیریت فایل‌ها با ماژول os در پایتون – مبانی پایتون

مدیریت فایل‌ها با ماژول os در پایتون – مبانی پایتون

ماژول os در پایتون یک رابط برنامه‌نویسی کاربردی (API) برای تعامل با سیستم‌عامل فراهم می‌کند. این ماژول امکانات گسترده‌ای برای مدیریت فایل‌ها و دایرکتوری‌ها، اجرای دستورات سیستم‌عامل، و دسترسی به متغیرهای محیطی ارائه می‌دهد. در این مقاله، به بررسی کاربردهای اصلی ماژول os در زمینه مدیریت فایل‌ها خواهیم پرداخت. این آموزش برای مبتدیان در پایتون و در دسته‌بندی ‘مبانی پایتون’ طراحی شده است.

وارد کردن ماژول os

برای استفاده از قابلیت‌های ماژول os، ابتدا باید آن را در برنامه خود وارد کنید. این کار با استفاده از دستور import os انجام می‌شود:

import os

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

قبل از انجام هرگونه عملیات بر روی یک فایل یا دایرکتوری، معمولاً می‌خواهیم بررسی کنیم که آیا آن مورد وجود دارد یا خیر. ماژول os توابعی برای این منظور ارائه می‌دهد:

  • os.path.exists(path): بررسی می‌کند که آیا فایل یا دایرکتوری با مسیر مشخص شده وجود دارد یا خیر.
  • os.path.isfile(path): بررسی می‌کند که آیا مسیر مشخص شده به یک فایل اشاره دارد یا خیر.
  • os.path.isdir(path): بررسی می‌کند که آیا مسیر مشخص شده به یک دایرکتوری اشاره دارد یا خیر.

مثال:


import os

file_path = "my_file.txt"
dir_path = "my_directory"

if os.path.exists(file_path):
    print(f"فایل {file_path} وجود دارد.")
else:
    print(f"فایل {file_path} وجود ندارد.")

if os.path.isfile(file_path):
    print(f"{file_path} یک فایل است.")
else:
    print(f"{file_path} یک فایل نیست.")

if os.path.isdir(dir_path):
    print(f"{dir_path} یک دایرکتوری است.")
else:
    print(f"{dir_path} یک دایرکتوری نیست.")

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

برای ایجاد یک دایرکتوری جدید، می‌توانید از تابع os.mkdir(path) استفاده کنید. این تابع یک دایرکتوری با مسیر مشخص شده ایجاد می‌کند. اگر دایرکتوری از قبل وجود داشته باشد، یک خطا رخ می‌دهد. برای جلوگیری از این خطا، می‌توانید از os.makedirs(path) استفاده کنید که دایرکتوری‌های والد را نیز در صورت نیاز ایجاد می‌کند.

مثال:


import os

dir_path = "new_directory"

try:
    os.mkdir(dir_path)
    print(f"دایرکتوری {dir_path} با موفقیت ایجاد شد.")
except FileExistsError:
    print(f"دایرکتوری {dir_path} از قبل وجود دارد.")

# ایجاد دایرکتوری‌های والد در صورت نیاز
dir_path_nested = "parent_directory/child_directory"
try:
    os.makedirs(dir_path_nested)
    print(f"دایرکتوری {dir_path_nested} با موفقیت ایجاد شد.")
except FileExistsError:
    print(f"دایرکتوری {dir_path_nested} از قبل وجود دارد.")

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

برای حذف یک فایل یا دایرکتوری، می‌توانید از توابع os.remove(path) و os.rmdir(path) استفاده کنید. تابع os.remove(path) یک فایل را حذف می‌کند و تابع os.rmdir(path) یک دایرکتوری خالی را حذف می‌کند. اگر دایرکتوری خالی نباشد، یک خطا رخ می‌دهد. برای حذف یک دایرکتوری غیرخالی، می‌توانید از تابع shutil.rmtree(path) استفاده کنید (این تابع در ماژول shutil قرار دارد).

مثال:


import os
import shutil

file_path = "my_file.txt"
dir_path = "my_directory"
dir_path_non_empty = "non_empty_directory"

# ایجاد فایل و دایرکتوری برای تست
with open(file_path, "w") as f:
    f.write("This is a test file.")
os.mkdir(dir_path)
os.mkdir(dir_path_non_empty)
with open(f"{dir_path_non_empty}/test_file.txt", "w") as f:
    f.write("This is a test file in a non-empty directory.")

try:
    os.remove(file_path)
    print(f"فایل {file_path} با موفقیت حذف شد.")
except FileNotFoundError:
    print(f"فایل {file_path} یافت نشد.")

try:
    os.rmdir(dir_path)
    print(f"دایرکتوری {dir_path} با موفقیت حذف شد.")
except OSError:
    print(f"دایرکتوری {dir_path} خالی نیست یا دسترسی لازم را ندارید.")

try:
    shutil.rmtree(dir_path_non_empty)
    print(f"دایرکتوری {dir_path_non_empty} و محتویات آن با موفقیت حذف شد.")
except FileNotFoundError:
    print(f"دایرکتوری {dir_path_non_empty} یافت نشد.")

تغییر نام فایل یا دایرکتوری

برای تغییر نام یک فایل یا دایرکتوری، می‌توانید از تابع os.rename(old_path, new_path) استفاده کنید. این تابع نام فایل یا دایرکتوری را از old_path به new_path تغییر می‌دهد.

مثال:


import os

old_file_path = "old_file.txt"
new_file_path = "new_file.txt"

# ایجاد فایل برای تست
with open(old_file_path, "w") as f:
    f.write("This is a test file.")

try:
    os.rename(old_file_path, new_file_path)
    print(f"نام فایل {old_file_path} به {new_file_path} تغییر یافت.")
except FileNotFoundError:
    print(f"فایل {old_file_path} یافت نشد.")
except FileExistsError:
    print(f"فایل {new_file_path} از قبل وجود دارد.")

لیست کردن محتویات یک دایرکتوری

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

مثال:


import os

dir_path = "."  # دایرکتوری فعلی

files = os.listdir(dir_path)

print(f"محتویات دایرکتوری {dir_path}:")
for file in files:
    print(file)

دریافت مسیر مطلق فایل یا دایرکتوری

برای دریافت مسیر مطلق یک فایل یا دایرکتوری، می‌توانید از تابع os.path.abspath(path) استفاده کنید. این تابع مسیر مطلق مسیر مشخص شده را برمی‌گرداند.

مثال:


import os

file_path = "my_file.txt"

absolute_path = os.path.abspath(file_path)

print(f"مسیر مطلق فایل {file_path}: {absolute_path}")

نتیجه‌گیری

ماژول os ابزاری قدرتمند برای مدیریت فایل‌ها و دایرکتوری‌ها در پایتون است. با استفاده از توابع این ماژول، می‌توانید به راحتی فایل‌ها و دایرکتوری‌ها را ایجاد، حذف، تغییر نام دهید، محتویات آن‌ها را لیست کنید و مسیرهای مطلق آن‌ها را دریافت کنید. این ماژول برای انجام بسیاری از وظایف مربوط به سیستم‌عامل در برنامه‌های پایتون ضروری است و درک آن برای هر برنامه‌نویس پایتون اهمیت دارد.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *