Piton

Parancssor-argumentumok hozzáadása egy Python-szkripthez?

Parancssor-argumentumok hozzáadása egy Python-szkripthez?
Ha kifejlesztett egy Python szkriptet vagy alkalmazást, amelyet elsősorban a terminálemulátorokban vagy akár GUI-alkalmazásokban futtatnak, akkor a parancssori argumentumok hozzáadása 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. Ezeket a parancssori argumentumokat „opcióknak” vagy „kapcsolóknak” is hívják, és hasonlóan működnek, mint általában a bash szkriptekben és más C / C ++ alapú programokban.

Argumentumok hozzáadásához a Python szkriptekhez egy beépített modult kell használnia „Argparse”. Ahogy a neve is sugallja, elemzi a Python parancsfájl vagy alkalmazás indításakor használt parancssori argumentumokat. Ezeket az elemzett argumentumokat az „argparse” modul is ellenőrzi, hogy megfelelő „típusúak-e”. Hibák merülnek fel, ha érvénytelen értékek vannak az argumentumokban.

Az argparse modul használatát példákkal lehet megérteni a legjobban. Az alábbiakban bemutatunk néhány kódmintát, amelyekből megismerheti az argparse modult.

1. példa: Segítség argumentum és üzenet létrehozása

Vegye figyelembe az alábbi kódmintát:

import argparse
parser = argparse.ArgumentParser (description = 'Egy tesztprogram.')
args = elemző.parse_args ()

Az első utasítás az „argparse” modult importálja. Ezután létrejön az „ArgumentParser” objektum új példánya, és a program rövid leírása argumentumként kerül megadásra. Az ArgumentParser objektumra a parancssori argumentumértékek Python által értett adattípusokká történő átalakításához van szükség. Ezt az ArgumentParser objektum „parse_args” módszerével hajtják végre, amint azt az utolsó utasítás is mutatja.

Feltéve, hogy a fent megadott mintakódot elmentette a „teszt” nevű fájlba.py ”, az alábbi parancsok futtatásával segítséget nyújthat a programmal kapcsolatos üzenetekhez.

$ ./teszt.py -h
$ ./teszt.py --segítség

Ehhez hasonló kimenetet kell kapnia:

felhasználás: teszt.py [-h]
A tesztprogram választható argumentumai:
-h, --help jelenítse meg ezt a súgó üzenetet és lépjen ki

Ne feledje, hogy a fent említett kódmintához nem került hozzá logika az elemzett argumentumok kezeléséhez és objektummá alakításhoz. Ezért az egyes argumentumokhoz 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 elkezdenek megjeleníteni az egyes argumentumok leírását.

2. példa: String argumentum kezelése

A Python szkript által elfogadható argumentumok hozzáadásához az „add_argument” metódust kell használnia. Vessen egy pillantást a következő kódra:

import argparse
parser = argparse.ArgumentParser (description = 'Egy tesztprogram.')
elemző.add_argument ("print_string", help = "Kiírja a mellékelt argumentumot.")
args = elemző.parse_args ()
nyomtatás (arg.print_string)

Új utasítás került hozzá, amely bemutatja az „add_argument” módszer használatát. A szkript indításakor hozzáadott argumentumokat az „ArgumentParser” „print_string” objektumként kezeli.

Ne feledje, hogy alapértelmezés szerint az „add_argument” módszer az argumentumokból kinyert értékeket karaktersorozatként kezeli, így ebben az esetben nem kell kifejezetten megadnia a „típust”. A hozzáadott argumentumokhoz a „Nincs” alapértelmezett értéket is hozzárendelik, hacsak nem írják felül.

Ismét vessen egy pillantást a súgó üzenetre:

használat: teszt.py [-h] [print_string]
A tesztprogram helyzeti argumentumai:
A print_string kinyomtatja a mellékelt argumentumot
választható argumentumok:
-h, --help jelenítse meg ezt a súgó üzenetet és lépjen ki

A kimenet egyik sora „helyzeti argumentumokat” mond. Mivel az argumentumhoz nincs meghatározva kulcsszó, az argumentumot jelenleg „helyzeti argumentumként” kezelik, ahol a megadott argumentum sorrendje és helyzete közvetlenül befolyásolja a programot. A pozíció argumentumok is kötelezőek, hacsak nem változtatja meg manuálisan a viselkedésüket.

Az opcionális argumentumok definiálásához és elemzéséhez használhatja a „-” (kettős kötőjel) elemet, és az alapértelmezett értékeket az „alapértelmezett” argumentummal módosíthatja.

import argparse
parser = argparse.ArgumentParser (description = 'Egy tesztprogram.')
elemző.add_argument ("- print_string", help = "Kiírja a mellékelt argumentumot.", default =" Véletlen karakterlánc.”)
args = elemző.parse_args ()
nyomtatás (arg.print_string)

Most, amikor lefuttatja a „tesztet.py ”szkriptet argumentum nélkül, meg kell kapnia a“ Véletlen karakterláncot.”Kimenetként. Opcionálisan használhatja a „-print_string” kulcsszót bármely tetszőleges karakterlánc kinyomtatásához.

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

Vegye figyelembe, hogy egy opcionális argumentumot kötelezővé tehet egy további „kötelező = Igaz” argumentum használatával.

Végül meghatározhatja az argumentum rövidített verzióit is a „-” (egyetlen kötőjel) használatával a bőbeszédűség csökkentése érdekében.

import argparse
parser = argparse.ArgumentParser (description = 'Egy tesztprogram.')
elemző.add_argument (“- p”, "--print_string", help = "Kiírja a mellékelt argumentumot.", default =" Véletlen karakterlánc.”)
args = elemző.parse_args ()
nyomtatás (arg.print_string)

A következő parancs futtatásával a fenti eredményt kapja:

$ ./teszt.py -p LinuxHint.com

3. példa: Integer argumentum kezelése

Az egész értéket igénylő argumentumok kezeléséhez a „type” kulcsszót „int” -re kell állítania, hogy engedélyezhesse az ellenőrzéseket és hibákat dobjon fel, ha a feltétel nem teljesül.

import argparse
parser = argparse.ArgumentParser (description = 'Egy tesztprogram.')
elemző.add_argument ("- p", "--print_string", help = "Kiírja a mellékelt argumentumot.", type = int)
args = elemző.parse_args ()
nyomtatás (arg.print_string)

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

$ ./teszt.py -p LinuxHint.com

Ilyen hibát kell kapnia:

használat: teszt.py [-h] [-p PRINT_STRING]
teszt.py: error: argument -p / - print_string: érvénytelen int érték: 'LinuxHint.com '

Egész szám megadásával megkapja a helyes eredményt:

$ ./teszt.py -p 1000 1000

4. példa: Igaz és hamis kapcsolók kezelése

Az argumentumok értékek nélkül adhatók át, hogy True és False jelzőként kezelje őket az „action” argumentum használatával.

import argparse
parser = argparse.ArgumentParser (description = 'Egy tesztprogram.')
elemző.add_argument ("- p", "--print_string", help = "Kiírja a mellékelt argumentumot.", action =" store_true ")
args = elemző.parse_args ()
nyomtatás (arg.print_string)

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

$ ./teszt.py -p

Ha a szkriptet a „-p” argumentum nélkül futtatja, akkor egy „False” értéket rendel hozzá. A „action” kulcsszó „store_true” értéke „True” értéket rendel a „print_string” változóhoz, amikor a „-p” argumentum kifejezetten meg van adva, különben a False értéket rendeljük hozzá.

5. példa: Az argumentumértékek listaként kezelése

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

import argparse
parser = argparse.ArgumentParser (description = 'Egy tesztprogram.')
elemző.add_argument ("- p", "--print_string", help = "Kiírja a mellékelt argumentumot.", nargs = '*')
args = elemző.parse_args ()
nyomtatás (arg.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 elég átfogó, rengeteg opcióval módosíthatja a parancssori alkalmazások viselkedését és elemezheti a felhasználó által megadott értékeket. Ezek a példák csak az „argparse” modul alapvető használatát érintik. Haladó és összetett alkalmazásokhoz különböző megvalósításokra lehet szükség. A modul teljes magyarázatához látogasson el a hivatalos dokumentációba.

Az AutoKey használata a Linux játékok automatizálásához
Az AutoKey egy asztali automatizáló segédprogram Linux és X11 rendszerekhez, Python 3, GTK és Qt programozással. A parancsfájlok és a MACRO funkcióina...
Az FPS-számláló megjelenítése a Linux-játékokban
A Linux játék komoly lendületet kapott, amikor a Valve 2012-ben bejelentette a Linux támogatását a Steam kliensnek és játékaiknak. Azóta sok AAA és in...
Sid Meier Civilization VI letöltése és lejátszása Linuxon
Bevezetés a játékba A Civilization 6 egy modern felvétel a Age of Empires játékok sorozatában bevezetett klasszikus koncepcióra. Az ötlet meglehetősen...