Како додати аргументе командне линије у Питхон скрипту

How Add Command Line Arguments Python Script



Ако сте развили Питхон скрипту или апликацију намењену првенствено извођењу у терминалским емулаторима или чак апликацијама са графичким интерфејсом, додавање аргумената командне линије може побољшати њену употребљивост, читљивост кода, структуру апликације и општу прилагођеност апликације крајњим корисницима. Ови аргументи командне линије се такође зову опције или прекидачи и функционишу слично аргументима које обично видите у басх скриптама и другим програмима заснованим на Ц / Ц ++.

Да бисте додали аргументе Питхон скриптама, мораћете да користите уграђени модул под именом аргпарсе. Као што име говори, он анализира аргументе командне линије који се користе при покретању Питхон скрипте или апликације. Ове рашчлањене аргументе такође проверава модул аргпарсе како би се осигурало да су исправног типа. Грешке се појављују ако у аргументима постоје неважеће вредности.







Употребу аргпарсе модула најбоље је разумети кроз примере. Испод су неки примери кода који ће вам омогућити да почнете са модулом аргпарсе.



Пример 1: Генеришите аргумент и поруку помоћи

Размотрите узорак кода у наставку:



увозаргпарсе

парсер =аргпарсе.АргументПарсер(Опис='Програм тестирања.')

аргс= парсер.парсе_аргс()

Прва наредба увози аргпарсе модул. Затим се креира нова инстанца објекта АргументПарсер и даје се кратак опис програма као аргумент. Објекат АргументПарсер је потребан за претварање вредности аргумената командне линије у типове података које разуме Питхон. Ово се ради методом парсе_аргс објекта АргументПарсер, као што је приказано у последњој наредби.





Под претпоставком да сте горе наведени узорак кода сачували у датотеци под називом тест.пи, извршавање наредби у наставку ће вам пружити поруке помоћи које се односе на програм.

$ ./тест.пи

$ ./тест.пи-помоћ

Требали бисте добити неки излаз сличан овоме:



употреба: тест.пи [-х]


Програм тестирања.


опциони аргументи:

-х, --хелп покажите ову поруку помоћи и изађите

Имајте на уму да ниједна логика за руковање рашчлањеним аргументима и њихово претварање у објекте није додата горе наведеном узорку кода. Дакле, поруке помоћи за појединачне аргументе нису приказане у испису. Када додате логику за руковање вриједностима рашчлањених аргумената у свом програму, поруке помоћи ће почети приказивати опис за појединачне аргументе.

Пример 2: Руковање низом аргумената

Да бисте додали аргументе прихватљиве за вашу питхон скрипту, морате да користите метод адд_аргумент. Погледајте следећи код:

увозаргпарсе

парсер =аргпарсе.АргументПарсер(Опис='Програм тестирања.')

парсер.адд_аргумент('принт_стринг', помоћ='Штампа достављени аргумент.')

аргс= парсер.парсе_аргс()

принт(аргс.принт_стринг)

Додата је нова изјава која приказује употребу методе адд_аргумент. АргументПарсер ће сваки аргумент додан при покретању скрипте третирати као објекат принт_стринг.

Имајте на уму да подразумевано метода адд_аргумент третира вредности преузете из аргумената као низове, тако да у овом случају не морате експлицитно навести тип. Подразумевана вредност Ноне се такође додељује додатим аргументима, осим ако није замењена.

Још једном погледајте поруку помоћи:

употреба: тест.пи [-х] [принт_стринг]


Програм тестирања.


позициони аргументи:

принт_стринг Штампа испоручени аргумент.


опциони аргументи:

-х, --хелп покажите ову поруку помоћи и изађите

Једна од линија у испису говори о позиционим аргументима. Пошто није дефинисана кључна реч за аргумент, тренутно се аргумент третира као позициони аргумент где редослед и позиција достављеног аргумента имају директан утицај на програм. Позициони аргументи су такође обавезни, осим ако ручно не промените њихово понашање.

Да бисте дефинисали и рашчланили опционалне аргументе, можете користити - (двострука цртица) и променити њихове подразумеване вредности користећи подразумевани аргумент.

увозаргпарсе

парсер =аргпарсе.АргументПарсер(Опис='Програм тестирања.')

парсер.адд_аргумент('--принт_стринг', помоћ='Штампа достављени аргумент.',Уобичајено=ДОнасумично низ.)

аргс= парсер.парсе_аргс()

принт(аргс.принт_стринг)

Сада када покренете тест.пи скрипту без икаквог аргумента, требало би да добијете случајни низ. као излаз. Такође можете опционално користити кључну реч –принт_стринг за штампање било ког низа по вашем избору.

$ ./тест.пи--принт_стринг ЛинукХинт.саЛинукХинт.цом

Имајте на уму да опционални аргумент можете учинити обавезним коришћењем додатног аргумента рекуиред = Труе.

На крају, такође можете дефинисати стенографске верзије аргумента помоћу - (једна цртица) да бисте смањили опширност.

увозаргпарсе

парсер =аргпарсе.АргументПарсер(Опис='Програм тестирања.')

парсер.адд_аргумент(-п, '--принт_стринг', помоћ='Штампа достављени аргумент.',Уобичајено=ДОнасумично низ.)

аргс= парсер.парсе_аргс()

принт(аргс.принт_стринг)

Покретање следеће команде требало би да вам да исти резултат као горе:

$ ./тест.пи-п ЛинукХинт.са

Пример 3: Рукујте целобројним аргументом

Да бисте руковали аргументима којима су потребне целобројне вредности, морате да поставите кључну реч типе на инт да бисте дозволили валидацију и бацили грешке у случају да услов није испуњен.

увозаргпарсе

парсер =аргпарсе.АргументПарсер(Опис='Програм тестирања.')

парсер.адд_аргумент('-п', '--принт_стринг', помоћ='Штампа достављени аргумент.', тип=инт)

аргс= парсер.парсе_аргс()

принт(аргс.принт_стринг)

Покушајте да покренете следећу команду:

$ ./тест.пи-п ЛинукХинт.са

Требали бисте добити овакву грешку:

употреба: тест.пи [-х] [-п ПРИНТ_СТРИНГ]

тест.пи: грешка: аргумент -п/-принт_стринг: неважећа вредност инт: 'ЛинукХинт.цом'

Навођење целобројне вредности даће вам тачан резултат:

$ ./тест.пи-п10001000

Пример 4: Руковање тачним и лажним пребацивањем

Можете проследити аргументе без икаквих вредности да бисте их третирали као Труе и Фалсе заставице помоћу аргумента ацтион.

увозаргпарсе

парсер =аргпарсе.АргументПарсер(Опис='Програм тестирања.')

парсер.адд_аргумент('-п', '--принт_стринг', помоћ='Штампа достављени аргумент.',поступак='сторе_труе')

аргс= парсер.парсе_аргс()

принт(аргс.принт_стринг)

Покрените наредбу испод да бисте добили једноставно Труе као излаз:

$ ./тест.пи-п

Ако покренете скрипту без аргумента -п, уместо ње ће бити додељена вредност Фалсе. Вредност сторе_труе кључне речи ацтион додељује Труе вредност променљивој принт_стринг кад год је -п аргумент експлицитно наведен, у супротном се Фалсе додељује променљивој.

Пример 5: Вредности аргумената третирајте као листу

Ако желите да добијете више вредности одједном и ускладиштите их на листи, морате да наведете кључну реч наргс у следећем формату:

увозаргпарсе

парсер =аргпарсе.АргументПарсер(Опис='Програм тестирања.')

парсер.адд_аргумент('-п', '--принт_стринг', помоћ='Штампа достављени аргумент.',наргс='*')

аргс= парсер.парсе_аргс()

принт(аргс.принт_стринг)

Покрените следећу команду да бисте тестирали горњи код:

$ ./тест.пи-п а б

Требало би да добијете неки излаз овако:

['а', 'б']

Закључак

Аргпарсе модул је прилично свеобухватан са мноштвом опција за подешавање понашања апликација командне линије и рашчлањивање вредности које достављају корисници. Ови примери се тичу само основне употребе аргпарсе модула. За напредне и сложене апликације можда ће вам требати различите имплементације. Посетите званична документација за потпуно објашњење модула.