کتابخونه argparse پایتون، و هر چیزی که باید دربارش بدونید

کتابخونه argparse پایتون، و هر چیزی که باید دربارش بدونید

کتابخونه argparse، یه لایبری پرکاربرد توی پایتونه که توی برنامه‌های تحت محیط متنی، برای گرفتن argument از کاربر بکار میره.با این خط شروع میکنیم:import argparseاول از همه این رو همیشه همراهتون داشته باشید:parser = argparse.ArgumentParser(description = &quot…&quot)که description یه توضیح کلی درباره برنامه‌تون میده.بعد باید تعیین کنید که چه آرگومنت‌هایی میخواید بگیرید. برای راحتی، فرض می‌کنیم یه برنامه قراره بنویسید که قراره یه سری آرگومنت بگیره و یه نوتییکیشن نشون بده، و اون برنامه این شکلی اجرا میشه:./program “title” -t “time” –icon “icon name” # show a notificationپس باید این شکلی بنویسید:parser.add_argument(&quottitle&quot)
parser.add_argument(&quot-t&quot, &quot–time&quot) # البته اینجا –time اضافه کاریه
parser.add_argument(&quot–icon&quot)حالا به بخشی میرسیم که باید اونارو parse کنیم:args = parser.parse_args()چیشد؟ الان شما یه متغیر دارید. که چی؟ ببینید:title = args.title
time = args.time
icon = args.iconیعنی هر کدوم از آرگومنت‌ها بعد از parse کردن، مقدارشون تو یه متد ذخیره میشه؛ مثلِ مثال بالا. خلاصه تا اینجا:import argparse

parser = argparse.ArgumentParser(description = &quot…&quot)
parser.add_argument(&quottitle&quot)
parser.add_argument(&quot-t&quot, &quot–time&quot) # البته اینجا –time اضافه کاریه
parser.add_argument(&quot–icon&quot)

args = parser.parse_args()
title = args.title
time = args.time
icon = args.iconاینم یه اجرا با طرح carbon:) میتونید با فراخوانی تابع parser.print_help هم این متنو ببینید.اول یه خلاصه ازش نشون بدیم بعد بریم سراغ توضیح هرکدوم و در آخر هم مثال:parser.add_argument(
name of argument,
help = help text,
type = argument type,
action = action type,
choices = list of choices,
default = default value,
required = true or false
)یه string که توضیحاتی درباره اون آرگومنت میده. به همین سادگی!نوع آرگومنت. مثلا اگه برابر int قرار بدید، داده ورودی بصورت int داده میشه، و اگه مثلا کاربر eleven رو بده، به ارور میرسه. یعنی که آرگومنت برای چه کاری ساخته شده یا که با تنظیم کردنش چه مقداری ثبت میشه. اگه متوجه نشدید نگران نشید! این موارد میتونن مقدار این پارامتر باشن (توی همه موارد، اگه آرگومنت داده نشد، مقدار پیشفرض یعنی None تنظیم میشه):هرچی گرفت همون!اگه آرگومنت داده شد، مقدارِ پارامتر const رو تنظیم میکنه (غیر اون: None). مثلا:parser.add_argument(&quot–do&quot, action = &quotstore_const&quot, const = &quothello&quot)

print(args.do)$ ./program –do
hello
$ ./program
Noneمثل قبل؛ منتهی اگه آرگومنت داده شد، مقدار True رو میزاره و اگه نشد False.برعکس حالت قبلی. اگه داده شد False رو میزاره وگرنه True.این جالبه! در واقع شما میتونید چند بار یه آرگومنت رو بیارید، و آخرسر همشون بصورت به list داده میشن.$ ./program -e one -e two -e threeargs.e == [‘one’, ‘two’, ‘three’] # Trueمثل قبلی؛ منتهی مقدار پارامتر const داده میشه.$ ./program -e -e -eargs.e == [const_value, const_value, const_value] # Trueتعداد دفعاتی که یه آرگومنت رو مینویسید رو میگیره (مثلا برای -vvv عدد ۳، و -ppppp عدد ۵)سوالی نیست؟ :)ورژن برنامه (parser.version) رو خروجی میده.البته خودتون هم میتونید یه نوع action درست کنید با استفاده از کلاس argparse.Action. اطلاعات بیشتر در اینجا.پ.ن: اون دو موردی که بولد شده بنظرم پرکاربردتر هستن:)اگه میخواید مقادیر ورودی برای یه آرگومنت محدود به یه سری موارد باشه، میتونید اون مقادیر رو بصورت به لیست به choices تحویل بدید.حالا یه مثال میزنیم:) مثلا همون برنامه‌ای که مثال زدم:اول برای title. باید نوعش حتما string باشه و باید داده بشه:parser.add_argument(
&quottitle&quot,
help = &quotthe title of the notification&quot,
required = True,
type = str
)بعد برای –time که زیاد کار نداره، فقط یه help با اینکه حتما باید داده بشه (required=True):parser.add_argument(
&quot-t&quot, &quot–time&quot,
help = &quotthe time when the notification will be shown that time&quot,
required = True
)و در آخر برای –icon که مقادیر مخصوص و مقدار پیشفرض داره، string نوعشه و الزاما نیاز نیست داده بشه:parser.add_argument(
&quot–icon&quot,
help = &quotthe time of the notification&quot,
type = str,
choices = [&quoterror&quot, &quotinfo&quot, &quotwarn&quot, &quotdone&quot],
default = &quotinfo&quot,
required = False
)دوباره یه خلاصه و بعدش توضیح:parser = ArgumentParser(
prog = program name,
description = program work description,
epilog = like a footer!,
add_help = true or false
)اسم برنامه که توی متن راهنما میاد. مثلا اگه اونو برابر notifshow قرار بدید، با چنین صحنه‌ای مواجه میشید:$ ./program
usage: notifshow [-h] ….همونطور که قبل‌تر هم توضیح دادم، یه توضیح درباره برنامه است.متنی که بعد از متن راهنما میاد. در واقع شبیه یه پی‌نوشت اخر متنه:) مثلا اگه اونو برابر “hope you enjoy it!” قرار بدید:$ ./program
usage: program [-h] ….

…description…

positional arguments:
….

additional arguments:
….

hope you enjoy it!اینکه متن راهنما هنگام دادن آرگومنت –help یا -h نشون داده بشه یا که نه. البته معمولا کسی اینو برابر False قرار نمیده:)دو تا تصویر با ‌استفاده از carbon ساخته شده که میتونید دربارش بخونید: https://virgool.io/@mmt/%D9%85%DB%8C%D9%86%DB%8C%D9%BE%D8%B3%D8%AA-carbon-%D8%B2%DB%8C%D8%A8%D8%A7%DB%8C%DB%8C-%DA%A9%D8%AF%D9%87%D8%A7%DB%8C%D8%AA%D8%A7%D9%86-%D8%A8%D8%A7-%D9%85%D8%A7-i21qbl6d2omb الان که فکرشو کردم، اون برنامه نمایش اعلان (که برای مثال اورده بودم) همچین ایده بدی نیست:) برای همین سعی کردم بنویسمش! اگه میخواید بیشتر با argparse آشنا بشید، دیدن سورس این برنامه میتونه بهتون کمک کنه. توی گیت‌هاب ببینید: https://github.com/pycdr/notifshow پ.ن: اگه خواستید یه برنامه متنی قشنگ بزنید، rich رو از یاد نبرید:)

Author: admin

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

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