0%
در حال بارگذاری...

جستجو در سایت

درس ۵ مقدماتی: مدیریت خطاها و کار با فایل‌ها در پایتون

پایتون | Python مقدماتی

تا حالا شده برنامه‌ت وسط کار خطا بده و نفهمی چرا؟ 😵 یا بخوای داده‌ها رو توی فایل ذخیره کنی؟ 📂 تو این درس، یاد می‌گیری چطور خطاها رو با try-except مدیریت کنی و چطور با فایل‌ها (خواندن و نوشتن) کار کنی. برای مثال، می‌تونی یه برنامه بسازی که اطلاعات کاربر رو ذخیره کنه یا خطاهای ورودی رو کنترل کنه. بنابراین، اگر درس‌های ۱ تا ۴ (متغیرها، شرط‌ها، حلقه‌ها، داده‌ساختارها و توابع) رو یاد گرفتی، حالا آماده‌ای که برنامه‌هات رو پایدارتر و کاربردی‌تر کنی! 🚀 با مثال‌های واقعی، جداول مقایسه، ۱۲ تمرین و یه پروژه جذاب، این درس تو رو برای دنیای واقعی برنامه‌نویسی آماده می‌کنه. بریم شروع کنیم! 🎉

مدیریت خطاها: نذار برنامه‌ت خراب شه! 🛠️

خطاها مثل تله‌های برنامه‌نویسی هستن. برای مثال، اگه کاربر به جای عدد، حروف بده، برنامه‌ت خطا می‌ده. با try-except می‌تونی خطاها رو مدیریت کنی:

try:
    num = int(input("یه عدد بده: "))
    print(f"عدد: {num}")
except ValueError:
    print("لطفاً فقط عدد وارد کن!")

علاوه بر این، می‌تونی چند خطا رو مدیریت کنی:

try:
    num = int(input("عدد: "))
    result = 10 / num
except ValueError:
    print("عدد معتبر وارد کن!")
except ZeroDivisionError:
    print("تقسیم بر صفر ممکن نیست!")

به علاوه، با else و finally کنترل بیشتری داری:

try:
    num = int(input("عدد: "))
except ValueError:
    print("عدد نیست!")
else:
    print(f"ممنون! عددت: {num}")
finally:
    print("بررسی تموم شد!")

💡 نکته: finally همیشه اجرا می‌شه، حتی اگه خطا باشه. بنابراین، برای تمیز کردن منابع (مثل بستن فایل) عالیه.

کار با فایل‌ها: ذخیره و بازیابی داده‌ها 📝

فایل‌ها برای ذخیره داده‌ها (مثل لیست خرید یا نمرات) استفاده می‌شن. برای مثال، می‌تونی متنی توی فایل بنویسی:

with open("data.txt", "w") as file:
    file.write("سلام، پایتون!\n")

به همین دلیل، with فایل رو خودکار می‌بنده. حالت‌های باز کردن فایل:

حالت کارکرد توضیح
"r" خواندن فقط می‌خونه، فایل باید وجود داشته باشه
"w" نوشتن فایل جدید می‌سازه یا قبلی رو پاک می‌کنه
"a" اضافه کردن به انتهای فایل اضافه می‌کنه

به عنوان مثال، خواندن فایل:

with open("data.txt", "r") as file:
    content = file.read()
    print(content)

علاوه بر این، برای خواندن خط‌به‌خط:

with open("data.txt", "r") as file:
    for line in file:
        print(line.strip())  # strip() فاصله‌های اضافی رو حذف می‌کنه

💡 نکته: مسیر فایل رو درست بده (مثل C:/PythonLessons/data.txt) وگرنه خطا می‌گیره.

ترکیب با درس‌های قبلی: توابع و داده‌ساختارها 🛠️

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

def save_list(items, filename):
    with open(filename, "w") as file:
        for item in items:
            file.write(f"{item}\n")

shopping = ["شیر", "نان", "تخم‌مرغ"]
save_list(shopping, "shopping.txt")

به علاوه، خطاها رو توی تابع مدیریت کن:

def read_file(filename):
    try:
        with open(filename, "r") as file:
            return file.read()
    except FileNotFoundError:
        return "فایل پیدا نشد!"
print(read_file("data.txt"))

بنابراین، این ترکیب برنامه‌هات رو قوی‌تر می‌کنه.

مثال‌های عملی: دنیای واقعی 💡

برای مثال، بیایم چند برنامه کاربردی بسازیم:

۱. ذخیره نمرات:

try:
    grades = [int(x) for x in input("نمرات (با فاصله): ").split()]
    with open("grades.txt", "w") as file:
        for grade in grades:
            file.write(f"{grade}\n")
    print("نمرات ذخیره شد!")
except ValueError:
    print("فقط عدد وارد کن!")

۲. شمارش کلمات فایل:

def count_words(filename):
    try:
        with open(filename, "r") as file:
            text = file.read()
            return len(text.split())
    except FileNotFoundError:
        return 0
print(f"تعداد کلمات: {count_words('data.txt')}")

۳. لیست خرید با فایل:

def add_to_list(item, filename="shopping.txt"):
    with open(filename, "a") as file:
        file.write(f"{item}\n")
item = input("مورد جدید: ")
add_to_list(item)

به همین دلیل، این مثال‌ها درس‌های قبلی رو با مدیریت خطاها و فایل‌ها ترکیب می‌کنن. کدها رو توی lesson5_examples.py ذخیره کن.

خطاهای رایج و راه‌حل‌ها ⚠️

به طور کلی، این خطاها تو مدیریت خطاها و فایل‌ها شایعن:

خطا علت راه‌حل
FileNotFoundError فایل وجود نداره مسیر فایل یا وجودش رو چک کن
PermissionError دسترسی به فایل نیست فایل رو در مسیری با دسترسی بنویس
ValueError ورودی ناسازگار (مثل حروف به جای عدد) با try-except مدیریت کن

برای مثال:

try:
    with open("missing.txt", "r") as file:
        print(file.read())
except FileNotFoundError:
    print("فایل پیدا نشد!")

تمرین‌ها: مهارتت رو تست کن! 📝

برای تسلط، این ۱۲ تمرین رو حل کن:

  1. تابعی بنویس که عدد بگیره و با try-except خطای ValueError رو مدیریت کنه.
  2. برنامه‌ای که یه لیست رو توی فایل ذخیره کنه.
  3. تابعی که تعداد خطوط یه فایل رو بشماره.
  4. برنامه‌ای که یه فایل رو بخونه و کلماتش رو چاپ کنه.
  5. تابعی که یه مورد رو به فایل اضافه کنه.
  6. برنامه‌ای که خطاهای ZeroDivisionError و ValueError رو مدیریت کنه.
  7. فایل نمرات رو بخون و میانگین بگیر.
  8. برنامه‌ای که متن فایل رو معکوس چاپ کنه.
  9. لیست خرید با امکان ذخیره و خواندن از فایل.
  10. تابعی که بررسی کنه فایل وجود داره یا نه.
  11. برنامه‌ای که کلمات تکراری فایل رو بشماره.
  12. تابعی که یه دیکشنری رو توی فایل ذخیره کنه.

💡 نکته: هر تمرین رو توی فایل جدا (ex1.py، ex2.py) ذخیره کن.

پروژه کوچک: دفترچه یادداشت ساده 📓

برای مثال، بیایم یه برنامه دفترچه یادداشت بسازیم که یادداشت‌ها رو ذخیره و نمایش بده:

  1. یادداشت‌ها رو توی فایل ذخیره کن.
  2. امکان اضافه، نمایش و حذف.
  3. مدیریت خطاها.
def add_note(note, filename="notes.txt"):
    try:
        with open(filename, "a") as file:
            file.write(f"{note}\n")
        print("یادداشت اضافه شد!")
    except PermissionError:
        print("خطا: مشکل دسترسی به فایل!")

def show_notes(filename="notes.txt"):
    try:
        with open(filename, "r") as file:
            notes = file.readlines()
            for i, note in enumerate(notes, 1):
                print(f"{i}. {note.strip()}")
    except FileNotFoundError:
        print("هیچ یادداشتی نیست!")

while True:
    print("\n=== دفترچه یادداشت ===")
    action = input("اضافه (a)، نمایش (s)، خروج (q): ")
    if action == "q":
        break
    elif action == "a":
        note = input("یادداشت: ")
        add_note(note)
    elif action == "s":
        show_notes()
print("خداحافظ!")

💡 تست کن: یادداشت اضافه کن، نمایش بده و فایل notes.txt رو چک کن.

سؤالات متداول (FAQ) ❓

به طور کلی، این سؤالات برای مبتدی‌ها رایجه:

  • چرا از try-except استفاده کنیم؟ برای جلوگیری از خراب شدن برنامه.
  • with بهتره یا باز کردن معمولی؟ with فایل رو خودکار می‌بنده.
  • چطور خطای فایل رو رفع کنم؟ مسیر و دسترسی فایل رو چک کن.
  • فایل متنی کجا ذخیره می‌شه؟ توی پوشه پروژه‌ت (مثل PythonLessons).

جمع‌بندی و قدم بعدی ⏭️

تبریک! 🚀 تو این درس مدیریت خطاها و کار با فایل‌ها رو یاد گرفتی و با بیش از ۱۲ مثال و یه پروژه، حسابی مسلط شدی. بنابراین، حالا می‌تونی برنامه‌های پایدار و کاربردی بسازی. علاوه بر این، درس بعدی (ماژول‌ها و کتابخانه‌ها) بهت یاد می‌ده چطور از کدهای آماده استفاده کنی. در نهایت، تمرین‌ها رو توی PythonLessons ذخیره کن و اگه دوست داشتی، توی GitHub آپلود کن تا پیشرفتت رو نشون بدی! 😎

ارسال نظر جدید

گزارش دیدگاه