ماژول os
چرا 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همچنان رایج و ضروریه برای یادگیری پایه