ذخیره کردن و خواندن دادههایی که کاربر تولید کرده
هنگام کار با دادههایی که کاربر تولید کرده، ذخیره کردن آنها با JSON سودمند است، زیرا اگر اطّلاعات او را جایی به شکلی ذخیره نکنید، با توقّف اجرای برنامه آنها را از دست خواهید داد. به مثالی نگاه میکنیم که در آن در اوّلین اجرای برنامه از کاربر نام او را میپرسیم و سپس زمانی که برنامه را دوباره اجرا کرد، نامش را به خاطر میآوریم.
با ذخیره کردن نام کاربر شروع میکنیم:
در ۱ یک نام کاربری را برای ذخیره کردن میپرسیم. سپس از json.dump() استفاده میکنیم و نام کاربری و یک شیء فایل را به آن میدهیم تا نام کاربری را در یک فایل ذخیره کند (۲). سپس پیامی چاپ میکنیم که ذخیره شدنِ اطّلاعات را به کاربران اطّلاع میدهد (۳):
اکنون برنامهای جدید مینویسیم که به کاربری که نام او قبلاً ذخیره شده سلام میکند:
در ۱ از json.load() برای خواندنِ اطّلاعات ذخیره شده در username.json استفاده و آن را به متغیّر username نسبت میدهیم. اکنون نامهای کاربری را بازیابی کردهایم و میتوانیم به آنها خوشآمد بگوییم (۲):
|
|
ما به ترکیب این دو برنامه در یک فایل نیاز داریم. زمانی که کسی remember_me.py را اجرا میکند، میخواهیم در صورتِ امکان، نامِ کاربریِ او را از حافظه بازیابی کنیم؛ بنابراین با یک بلوک try شروع میکنیم که سعی میکند نام کاربری را بازیابی کند. اگر فایل username.json وجود نداشته باشد، در بلوک except نام کاربری را میپرسیم و برای دفعات بعد در username.json ذخیره میکنیم:
|
|
هیچ کد جدیدی اینجا وجود ندارد؛ فقط بلوکهای کد دو مثال قبلی را در یک فایل ترکیب کردهایم. در ۱ تلاش میکنیم که فایل username.json را باز کنیم. اگر این فایل وجود داشته باشد، نام کاربری را از آن میخوانیم (۲) و پیام خوشآمدی خطاب به کاربر در بلوک else چاپ میکنیم. اگر این اوّلین باری باشد که کاربر برنامه را اجرا میکند، پس username.json وجود ندارد و خطای FileNotFoundError رخ خواهد داد (۳). پایتون به بلوک except میرود و در آنجا از کاربر نام کاربریاش را میپرسد (۴). سپس از json.dump() برای ذخیره کردن نام کاربری استفاده میکنیم و پیامی چاپ میکنیم (۵).
هر کدام از بلوکها که اجرا شوند، نتیجه یک نام کاربری و یک پیام مناسب خواهد بود. اگر اوّلین اجرای برنامه باشد، خروجی اینچنین خواهد بود:
در غیر این صورت:
|
|
این خروجیای است که اگر برنامه قبلاً یک بار اجرا شده باشد خواهید دید.