ایجاد برنامه های خط فرمان با ماژول click – بخش سوم

در مطالب قبلی در مورد option ها و آرگومان ها صحبت کردیم و توضیح دایم که option ها می توانند به صورت بولی باشند و یا option هایی را تعریف کنیم که یک یا چند مقدار را دریافت کنند. آر گومان ها شبیه option ها هستند با این تفاوت که وابسته به موقعیت می باشند. در این مطلب می خواهیم جنبه دیگری از برنامه های خط فرمان صحبت که prompt یا اعلان نامیده می شوند. اعلان پیغامی است که به کاربر برای وارد کردن اطلاعات نمایش داده می شود. لطفا پیش از هر چیز بخش نخست از سری مطلب های ماژول click را مطالعه کنید.

ایجاد برنامه های خط فرمان با ماژول click – بخش نخست

ایجاد برنامه های خط فرمان با ماژول click – بخش دوم

به طور مثال فرض کنید می خواهید نام کاربری و گذرواژه را دریافت کنید و سپس مقادیر ورودی را با سطرهای جدولی از پایگاه داده بررسی کنید و در نهایت خروجی را آماده کنید که می تواند یک نتیجه مطلوب باشد و یا یک خطای ناشی از عدم وجود رکوردی مناسب در پایگاه داده باشد. کد زیر سه option به نام های fname و lname و age را تعریف می کند که از نوع prompt هستند. توجه کنید برای تعیین prompt بودن، باید پارامتر prompt را در ()@click.option تعیین کنیم.

شکل زیر سه روش از اجرای دستور را نشان می دهد. در کد بالا سه option به ترتیب به نام های fname و lname و age تعریف کرده ایم که در بدنه ()click.option@ آنها مقدار پارامتر prompt برابر با True است. مقدار این پارامتر به صورت پیشفرض برابر با False است. در روش اول دستور به تنهایی اجرا شده و سپس به تعداد ۳ option، سه prompt نشان داده می شود و در نهایت رشته تشکیل شده از مقدار این سه پارامتر نشان داده می شود. در حالت های بعدی به جای استفاده از ورود داده ها از طریق prompt، مستقیما در جلوی خود برنامه به option ها ارسال شده اند.

ایجاد اعلان برای دریافت گذرواژه

برای ایجاد کردن اعلانی که برای دریافت گذرواژه استفاده می شود، باید درون option مربوطه از پارامتر hide_input با مقدار استفاده کنیم. در کد زیر که هدف آن نوشتن برنامه ای است که کاربری را در جدول ثبت نام می کند، دو option به نام های name و passwd ایجاد کرده ایم. در خط ۵ از بدنه ()click.option@ می بینید که پارامتر hide_input=True است، پس این اعلان یا prompt از نوع دریافت گذرواژه است. شکل زیر خروجی اجرای برنامه است که مشاهده می کنید که در زمان ورود گذرواژه ورودی مخفی می شود و در واقع کاراکترهای ورودی نمایش داده نمی شوند.

همانطور که می بینید چون در خط ۵ از بدنه ()click.option@ پارامتر confirmation_prompt برابر با True است، پس ماژول click بررسی می کند که آیا دو گذرواژه ورودی یکسان هستند یا نه، اگذ یکسان نباشند، پس یک خطا نشان داده می شود و مجدد از شما درخواست ورود گذرواژه و تکرار آنرا می کند. برای اطلاعات بیشتر این لینک را در مورد دیگر ویژگی های قابل پیاده سازی در prompt مطالعه کنید.

نمایش اعلان برای وارد کردن داده و ذخیره در متغیر

در مطالب بالایی توضیح دادیم که چگونه می توانیم اطلاعات ورودی را از طریق نمایش خط اعلان (یا همان prompt) از کاربر دریافت کنیم که می توانست شامل در یافت گذرواژه نیز باشد. به صورت معمول برای دریافت ورودی از کاربر باز توابع ()input و ()input_raw استفاده می شود، اما ماژول click متدی به نام ()prompt را برای دریافت ورودی از کاربر فراهم کرده است. در قطعه کد زیر از طریق متد ()prompt سه ورودی برای نام، نام خانوادگی و سن از کاربر دریافت می شود که به ترتیب در سه متغیر به نام های fname و lname و age ذخیره می شوند. سپس توسط متد ()echo نشان داده می شوند، پس می توانیم نتیجه بگیریم که متد ()prompt معادل توابع ()input و ()input_raw و متد ()echo معادل تابع ()print در پایتون است.

دریافت ورودی و چاپ خروجی در پایتون

در متد ()prompt می توانیم از طریق پارامتر type نوع ورودی را تعیین کنیم. به عبارت دیگر چون نوع ورودی به صورت پیشفرض برابر با رشته (str) است، می توانیم در خود متد ()prompt تبدیل نوع را انجام دهیم. در خط ۱۱ از کد زیر پارامتر default را با عدد ۳.۴ مقدار دهی شده است. پارامتر default دو هدف دارد، نخست اینکه اگر مقداری را برای متغیر انتخاب نکنیم، مقدار دلخواه انتساب داده شده به پارامتر deafult برای متغیر در نظر گرفته می شود و همچنین با توجه به نوع مقدار انتساب داده شده به پارامتر default، نوع یا type ورودی نیز تعیین می شود، به عبارت دیگر عملکرد پارامتر type را نیز انجام می دهد.

در شکل بالا می بینید که برای سومین prompt (یا همان اعلان) هیچ مقداری وارد نشده است، پس چون مقدار پیشفرض آن عدد ۳.۴ است، پس همین عدد پیشفرض برای متغیر counter3 در نظر گرفته می شود. همچنین در شکل می توانید نوع مقادیر ورودی برای هر سه اعلان و قاعدتا هر سه متغیر را مشاهده کنید.

اداره کردن تاییدیه Yes/No

احتمالا شما با دستور rm در سیستم عامل های یونیکسی کار کرده اید. این دستور برای پاک کردن (remove) یک فایل استفاده می شود. به صورت پیشفرض زمانی که دستور را برای پاک کردن یک فایل یا محتوای درون یک دایرکتوری استفاده می کنید، از شما پرسیده می شود که آیا برای پاک شدن اطمینان دارید یا نه و با وارد کردن کلمه yes، به دستور اعلام می کنید که از پاک شدن فایل مطمئن هستید. همچنین زمانی که از طریق ssh می خواهید به سرور راه دور متصل شوید، بازهم از شما برای اطمینان از اتصال تاییدیه درخواست می شود. بنابراین دستورهای خط فرمان ممکن است لازم به تاییدیه داشته باشند.

در ماژول click متدی به نام ()confirm وجود دارد که همانند ()prompt یک اعلان را نشان می دهد ولی دیگر مقداری را دریافت نمی کند، بلکه در انتظار تاییدیه y/n می ماند. در صورتی که y وارد شود، پس عملکرد دلخواه شما انجام می شود و در غیر این صورت به طور مثال می توانید از فرایند اجرای برنامه خارج شوید و یا حتی یک عملکرد دیگر را انجام دهید. کد زیر مثال ساده ای را نشان می دهد که در شرط if بررسی می شود که آیا شما y را وارد کرده اید یا نه؟

برای اطلاع بیشتر می توانید لینک های زیر را مطالعه کنید.

User Input Prompts

Option Password Prompts

مثال ها

۱ – در انتهای مطلب روش های ذخیره تنظیم های برنامه های پایتون، مثالی از کاربرد متدهای ()prompt و ()confirm گفته شده است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *