ماژول os

اصلاح شده

2026-07-25

چرا os؟

  • ماژول os برای کار با سیستم‌عامل (فایل، پوشه، مسیر) استفاده می‌شه — چیزی فراتر از خواندن/نوشتن محتوای فایل
  • وارد کردن: import os

بررسی وجود فایل/پوشه

import os

os.path.exists('mbox.txt')     # True / False
os.path.isfile('mbox.txt')     # آیا فایله؟
os.path.isdir('data')          # آیا پوشه‌ست؟

نکته کلاسی: قبل از باز کردن فایل با open()، می‌شه اول با os.path.exists() چک کرد (هرچند try-except هم روش رایج و ایمن‌تریه)

حذف فایل

os.remove('output.txt')
  • ⚠️ اگه فایل وجود نداشته باشه → خطای FileNotFoundError

تغییر نام / جابه‌جایی فایل

os.rename('old_name.txt', 'new_name.txt')

کار با پوشه‌ها

تابع کار
os.mkdir('folder') ساخت یک پوشه
os.makedirs('a/b/c') ساخت پوشه‌های تودرتو (چند سطحی)
os.rmdir('folder') حذف پوشه (فقط اگه خالی باشه)
os.listdir('.') لیست فایل‌ها و پوشه‌های داخل یک مسیر
os.mkdir('new_folder')
print(os.listdir('.'))

مسیر فعلی و تغییر مسیر

print(os.getcwd())      # مسیر فعلی که برنامه در اون اجرا می‌شه
os.chdir('data')        # تغییر مسیر فعلی به پوشه data

کار با مسیرها — os.path

تابع کار مثال
os.path.join() ساخت مسیر به‌صورت درست (سازگار با ویندوز/لینوکس) os.path.join('data', 'mbox.txt')
os.path.basename() فقط نام فایل از مسیر 'data/mbox.txt''mbox.txt'
os.path.dirname() فقط مسیر پوشه 'data/mbox.txt''data'
os.path.splitext() جدا کردن نام و پسوند فایل 'mbox.txt'('mbox', '.txt')

نکته کلاسی مهم: به‌جای الحاق دستی رشته‌ها برای مسیر (مثل 'data' + '/' + 'mbox.txt')، همیشه از os.path.join() استفاده بشه — چون در ویندوز جداکننده مسیر \ است نه /

گرفتن اطلاعات فایل

os.path.getsize('mbox.txt')    # حجم فایل بر حسب بایت

پیمایش کامل یک درخت پوشه

for root, dirs, files in os.walk('.'):
    for f in files:
        print(os.path.join(root, f))
  • os.walk() به‌صورت بازگشتی همه‌ی زیرپوشه‌ها و فایل‌ها رو برمی‌گردونه

نکته پایانی

  • برای عملیات پیشرفته‌تر روی مسیرها (به‌خصوص در پروژه‌های جدید)، پایتون کتابخانه pathlib رو هم داره که شیءگراتره و امروزه ترجیح داده می‌شه؛ ولی os همچنان رایج و ضروریه برای یادگیری پایه