یاد بگیرید. بسازید.

۷. فایل و خطا؛ خریدها بعد از بستن برنامه بمانند

با json و pathlib هزینه‌ها را ذخیره کن، دوباره بخوان و خطای تبدیل مبلغ را با except مشخص مدیریت کن.

نکس‌کد؛ پایتون از اولین خط تا پروژه مدیریت هزینه

حافظه موقت است

متغیرهای برنامه بعد از تمام شدن اجرای محلی باقی نمی‌مانند. فایل برای نگه‌داشتن اطلاعات است. JSON یک قالب متنی برای داده‌های ساده مثل لیست و دیکشنری است. ما داده را به متن JSON تبدیل می‌کنیم، در فایل می‌نویسیم و بعد متن را دوباره به داده پایتون برمی‌گردانیم.

لیست در حافظهjson.dumps → متنفایل expenses.jsonjson.loads → لیست
نکس‌کد | تبدیل داده به متن و برگرداندن آن؛ نام دو تابع را با جهت کارشان بخوان.

یک بار بنویس، دوباره بخوان

فایل خریدها

عنوان خرید را تغییر بده؛ متن JSON و داده خوانده‌شده را مقایسه کن.

main.pypython
import json
from pathlib import Path

expenses = [{"title": "دفتر", "amount": 45000}]
path = Path("expenses.json")
text = json.dumps(expenses, ensure_ascii=False, indent=2)
path.write_text(text, encoding="utf-8")

loaded = json.loads(path.read_text(encoding="utf-8"))
print(text)
print(loaded[0]["title"])
یک راهنمایی می‌خواهم

ensure_ascii=False خواندن متن فارسی را راحت‌تر می‌کند.

راهنمایی بیشتر

json.loads متن را به مقدار پایتون تبدیل می‌کند.

import ابزار آماده را وارد برنامه می‌کند. json و pathlib همراه پایتون هستند؛ نصب جدا نمی‌خواهند. Path مسیر فایل را نمایندگی می‌کند. UTF-8 برای نوشتن و خواندن متن فارسی مشخص شده است. write_text فایل موجود را جایگزین می‌کند؛ برای اطلاعات مهم اول نسخه پشتیبان بگیر.

فقط خطایی را بگیر که می‌فهمی

متن نامعتبر را تشخیص بده

raw_amount را بین "45000" و "abc" عوض کن.

main.pypython
raw_amount = "abc"
try:
    amount = int(raw_amount)
    if amount <= 0:
        print("مبلغ باید مثبت باشد")
    else:
        print(f"مبلغ ثبت‌شدنی: {amount}")
except ValueError:
    print("مبلغ را با رقم وارد کن؛ مثلاً 45000")
یک راهنمایی می‌خواهم

int("abc") خطای ValueError می‌دهد.

راهنمایی بیشتر

except را هم‌سطح try بنویس.

try کدی را اجرا می‌کند که احتمال خطای مشخص دارد. except ValueError همین خطای تبدیل را مدیریت می‌کند. همه خطاها را بی‌صدا نادیده نگیر. برای خطای ناشناخته، پیام را از آخر بخوان: نوع خطا، توضیح و شماره خط کمک می‌کنند محل مشکل را پیدا کنی. تمرین: صفر و منفی ۵ را امتحان کن؛ باید پیام مبلغ مثبت را ببینی.

ادامه مسیر