A parancssori érvek hozzáadása a Python -szkripthez

How Add Command Line Arguments Python Script



Ha olyan Python -szkriptet vagy alkalmazást fejlesztett ki, amelyet elsősorban terminál -emulátorokban vagy akár GUI -alkalmazásokban kell futtatni, akkor a parancssori argumentumok hozzáadásával javíthatja annak használhatóságát, kódolvashatóságát, alkalmazásszerkezetét és az alkalmazás általános felhasználóbarát jellegét a végfelhasználók számára. Ezeket a parancssori argumentumokat opcióknak vagy kapcsolóknak is nevezik, és hasonlóan működnek, mint a bash parancsfájlokban és más C / C ++ alapú programokban általában látható argumentumok.

Ha érveket szeretne hozzáadni a Python parancsfájlokhoz, használnia kell az argparse nevű beépített modult. Ahogy a neve is sugallja, elemzi a Python -szkript vagy alkalmazás indításakor használt parancssori argumentumokat. Ezeket az elemzett argumentumokat az argparse modul is ellenőrzi annak biztosítása érdekében, hogy megfelelő típusúak legyenek. Hibák merülnek fel, ha érvénytelen értékek vannak az argumentumokban.







Az argparse modul használatát példákon keresztül lehet a legjobban megérteni. Az alábbiakban bemutatunk néhány kódmintát, amelyekkel megismerkedhet az argparse modullal.



1. példa: Súgó érv és üzenet létrehozása

Tekintsük az alábbi kódmintát:



importargparse

elemző =argparse.ArgumentParser(leírás=- Egy tesztprogram.)

args= elemző.parse_args()

Az első utasítás importálja az argparse modult. Ezután létrejön az ArgumentParser objektum új példánya, és érvként a program rövid leírása kerül megadásra. Az ArgumentParser objektum szükséges a parancssori argumentumok Python által értett adattípusokká alakításához. Ezt az ArgumentParser objektum parse_args metódusa teszi, az utolsó utasításban látható módon.





Feltéve, hogy a fenti kódmintát mentette egy test.py nevű fájlba, az alábbi parancsok futtatásával kaphat a programhoz kapcsolódó súgóüzeneteket.

$ ./teszt.py-h

$ ./teszt.py-Segítség

Ehhez hasonló kimenetet kell kapnia:



használat: test.py [-h]


Egy tesztprogram.


opcionális érvek:

-h, -segít megmutatni ezt a súgóüzenetet és kilépni

Ne feledje, hogy a fent említett kódmintához nem adtak hozzá logikát az elemzett argumentumok kezelésére és objektumokká alakítására. Ezért az egyes érvekhez tartozó súgóüzenetek nem jelennek meg a kimenetben. Miután hozzáadta a logikát az elemzett argumentumok értékeinek kezeléséhez a programban, a súgóüzenetek elkezdik leírni az egyes argumentumokat.

2. példa: Kezeljen egy húros érvet

A python -szkript által elfogadható érvek hozzáadásához az add_argument metódust kell használni. Nézze meg az alábbi kódot:

importargparse

elemző =argparse.ArgumentParser(leírás=- Egy tesztprogram.)

elemző.add_argument('print_string', Segítség='Kinyomtatja a mellékelt érvet.')

args= elemző.parse_args()

nyomtatás(args.print_string)

Egy új utasítás került hozzáadásra, amely az add_argument metódus használatát mutatja be. A szkript indításakor hozzáadott érveket az ArgumentParser print_string objektumként kezeli.

Ne feledje, hogy alapértelmezés szerint az add_argument metódus karakterláncként kezeli az argumentumokból lekért értékeket, így ebben az esetben nem kell kifejezetten megadni a típust. A hozzáadott argumentumokhoz a Nincs alapértelmezett érték is hozzá van rendelve, kivéve, ha felülbírálják.

Ismét nézze meg a súgóüzenetet:

használat: test.py [-h] [print_string]


Egy tesztprogram.


Pozíciós érvek:

print_string Kinyomtatja a mellékelt argumentumot.


opcionális érvek:

-h, -segít megmutatni ezt a súgóüzenetet és kilépni

A kimenet egyik sora pozicionális érveket mond. Mivel az argumentum kulcsszava nincs meghatározva, jelenleg az érvet pozicionális érvként kezelik, ahol a megadott argumentum sorrendje és pozíciója közvetlen hatással van a programra. A pozicionális érvek szintén kötelezőek, kivéve, ha manuálisan módosítja a viselkedésüket.

Az opcionális argumentumok meghatározásához és elemzéséhez használhatja a (kettős kötőjelet) és módosíthatja az alapértelmezett értékeket az alapértelmezett argumentum használatával.

importargparse

elemző =argparse.ArgumentParser(leírás=- Egy tesztprogram.)

elemző.add_argument('--print_string', Segítség='Kinyomtatja a mellékelt érvet.',alapértelmezett=NAK NEKvéletlen húr.)

args= elemző.parse_args()

nyomtatás(args.print_string)

Ha a test.py szkriptet minden érv nélkül futtatja, akkor kapnia kell egy véletlen karakterláncot. mint kimenet. Opcionálisan a –print_string kulcsszót is használhatja tetszőleges karakterlánc kinyomtatásához.

$ ./teszt.py--print_string LinuxHint.val velLinuxHint.com

Ne feledje, hogy az opcionális argumentumokat kötelezővé teheti egy további kötelező = True argumentum használatával.

Végezetül az argumentum rövidített változatait is definiálhatja a - (egyetlen kötőjel) használatával a beszédesség csökkentése érdekében.

importargparse

elemző =argparse.ArgumentParser(leírás=- Egy tesztprogram.)

elemző.add_argument(-p, '--print_string', Segítség='Kinyomtatja a mellékelt érvet.',alapértelmezett=NAK NEKvéletlen húr.)

args= elemző.parse_args()

nyomtatás(args.print_string)

A következő parancs futtatásával ugyanazt az eredményt kell kapnia, mint fent:

$ ./teszt.py-p LinuxHint.val vel

3. példa: Egész érvelés kezelése

Az egész értékeket igénylő argumentumok kezeléséhez be kell állítania a type kulcsszót int értékre, hogy engedélyezze az érvényesítést és hibákat dobjon arra az esetre, ha a feltétel nem teljesül.

importargparse

elemző =argparse.ArgumentParser(leírás=- Egy tesztprogram.)

elemző.add_argument('-p', '--print_string', Segítség='Kinyomtatja a mellékelt érvet.', típus=int)

args= elemző.parse_args()

nyomtatás(args.print_string)

Próbálja meg futtatni a következő parancsot:

$ ./teszt.py-p LinuxHint.val vel

Ilyen hibát kell kapnia:

használat: test.py [-h] [-p PRINT_STRING]

test.py: error: argument -p/-print_string: érvénytelen int érték: 'LinuxHint.com'

Ha egész számot ad meg, akkor helyes eredményt kap:

$ ./teszt.py-p10001000

4. példa: Kezelje az igaz és hamis kapcsolókat

Az argumentumokat értékek nélkül adhatja át, és igaz és hamis jelzőként kezelheti őket a művelet argumentum használatával.

importargparse

elemző =argparse.ArgumentParser(leírás=- Egy tesztprogram.)

elemző.add_argument('-p', '--print_string', Segítség='Kinyomtatja a mellékelt érvet.',akció='store_true')

args= elemző.parse_args()

nyomtatás(args.print_string)

Futtassa az alábbi parancsot, hogy kimenetként egy egyszerű True értéket kapjon:

$ ./teszt.py-p

Ha a szkriptet a -p argumentum nélkül futtatja, akkor hamis érték kerül hozzárendelésre. A műveleti kulcsszó store_true értéke True értéket rendel a print_string változóhoz, amikor a -p argumentum kifejezetten meg van adva, ellenkező esetben a False kerül hozzárendelésre a változóhoz.

5. példa: Az argumentumértékeket listaként kezelje

Ha egyszerre több értéket szeretne lekérni és a listában tárolni, akkor a nargs kulcsszót a következő formátumban kell megadnia:

importargparse

elemző =argparse.ArgumentParser(leírás=- Egy tesztprogram.)

elemző.add_argument('-p', '--print_string', Segítség='Kinyomtatja a mellékelt érvet.',nargs='*')

args= elemző.parse_args()

nyomtatás(args.print_string)

Futtassa a következő parancsot a fenti kód teszteléséhez:

$ ./teszt.py-p a b

Ilyen kimenetet kell kapnia:

['a', 'b']

Következtetés

Az argparse modul meglehetősen átfogó, rengeteg lehetőség van a parancssori alkalmazások viselkedésének és a felhasználó által megadott értékek módosítására. Ezek a példák csak az argparse modul alapvető használatát érintik. A fejlett és összetett alkalmazásokhoz különböző megvalósításokra lehet szükség. Meglátogatni a hivatalos dokumentáció a modul teljes magyarázatához.