Si heu desenvolupat un script o una aplicació Python destinada principalment a executar-se en emuladors de terminal o fins i tot en aplicacions GUI, afegir arguments de línia d’ordres us pot millorar la facilitat d’ús, la llegibilitat del codi, l’estructura de l’aplicació i la facilitat general de l’aplicació per als usuaris finals. Aquests arguments de la línia d'ordres també s'anomenen opcions o commutadors i funcionen de manera similar als arguments que normalment veieu en scripts bash i altres programes basats en C / C ++.
Per afegir arguments als scripts Python, haureu d'utilitzar un mòdul integrat anomenat argparse. Com el seu nom indica, analitza els arguments de la línia d'ordres utilitzats durant el llançament d'un script o aplicació Python. Aquests arguments analitzats també són verificats pel mòdul argparse per assegurar-se que són del tipus adequat. Els errors es generen si hi ha valors no vàlids als arguments.
L’ús del mòdul argparse es pot entendre millor a través d’exemples. A continuació es mostren alguns exemples de codi que us permetran començar amb el mòdul argparse.
Exemple 1: Generar argument i missatge d'ajuda
Considereu l'exemple de codi següent:
importacióargparse
analitzador =argparse.ArgumentParser(descripció='Un programa de proves'.)
args= analitzador.parse_args()
La primera sentència importa el mòdul argparse. A continuació, es crea una nova instància de l'objecte ArgumentParser i es proporciona una breu descripció del programa com a argument. L’objecte ArgumentParser és necessari per convertir els valors de l’argument de la línia d’ordres a tipus de dades que entén Python. Això es fa mitjançant el mètode parse_args de l'objecte ArgumentParser, tal com es mostra a l'última sentència.
Suposant que heu desat la mostra de codi indicada anteriorment en un fitxer anomenat test.py, executant les ordres següents obtindreu missatges d’ajuda relacionats amb el programa.
$ ./prova.py-h$ ./prova.py-ajuda
Hauríeu d'obtenir una sortida similar a aquesta:
ús: test.py [-h]
Un programa de proves.
arguments opcionals:
-h, --help mostra aquest missatge d'ajuda i surt
Tingueu en compte que no s'ha afegit cap lògica per gestionar arguments analitzats i convertir-los en objectes a la mostra de codi esmentada anteriorment. Per tant, els missatges d'ajuda per a arguments individuals no es mostren a la sortida. Un cop hàgiu afegit la lògica per gestionar els valors dels arguments analitzats al programa, els missatges d'ajuda començaran a mostrar la descripció dels arguments individuals.
Exemple 2: gestionar un argument de cadena
Per afegir arguments acceptables pel vostre script python, heu d’utilitzar el mètode add_argument. Mireu el codi següent:
importacióargparseanalitzador =argparse.ArgumentParser(descripció='Un programa de proves'.)
analitzador.add_argument('print_string', ajuda='Imprimeix l'argument subministrat.')
args= analitzador.parse_args()
imprimir(args.print_string)
S'ha afegit una nova declaració que mostra l'ús del mètode add_argument. Qualsevol argument afegit en iniciar el script serà tractat com un objecte print_string per ArgumentParser.
Tingueu en compte que, per defecte, el mètode add_argument tracta els valors recuperats dels arguments com a cadenes, de manera que no cal especificar explícitament el tipus en aquest cas. També s'assigna un valor per defecte a Cap als arguments afegits, tret que s'anul·li.
Torneu a fer una ullada al missatge d’ajuda:
ús: test.py [-h] [print_string]Un programa de proves.
arguments posicionals:
print_string Imprimeix l'argument subministrat.
arguments opcionals:
-h, --help mostra aquest missatge d'ajuda i surt
Una de les línies de la sortida diu arguments posicionals. Com que no es defineix cap paraula clau per argument, actualment l'argument es tracta com un argument posicional on l'ordre i la posició de l'argument subministrat tenen un efecte directe sobre el programa. Els arguments de posició també són obligatoris, tret que canvieu manualment el seu comportament.
Per definir i analitzar arguments opcionals, podeu utilitzar - (guió doble) i canviar els seus valors predeterminats mitjançant l'argument predeterminat.
importacióargparseanalitzador =argparse.ArgumentParser(descripció='Un programa de proves'.)
analitzador.add_argument('--print_string', ajuda='Imprimeix l'argument subministrat.',per defecte=Aaleatori corda.)
args= analitzador.parse_args()
imprimir(args.print_string)
Ara, quan executeu l'script test.py sense cap argument, hauríeu d'obtenir una cadena aleatòria. com a sortida. Opcionalment, també podeu utilitzar la paraula clau –print_string per imprimir qualsevol cadena que trieu.
$ ./prova.py--print_string LinuxHint.ambLinuxHint.comTingueu en compte que podeu fer obligatori un argument opcional mitjançant un argument addicional requerit = True.
Per últim, també podeu definir versions abreujades de l’argument mitjançant - (guió simple) per reduir la verbositat.
importacióargparseanalitzador =argparse.ArgumentParser(descripció='Un programa de proves'.)
analitzador.add_argument(-p, '--print_string', ajuda='Imprimeix l'argument subministrat.',per defecte=Aaleatori corda.)
args= analitzador.parse_args()
imprimir(args.print_string)
L'execució de l'ordre següent us donarà el mateix resultat que l'anterior:
$ ./prova.py-p LinuxHint.ambExemple 3: Manejar un argument sencer
Per gestionar arguments que necessiten valors enters, heu d’establir la paraula clau tipus a int per permetre la validació i generar errors en cas que no es compleixi la condició.
importacióargparseanalitzador =argparse.ArgumentParser(descripció='Un programa de proves'.)
analitzador.add_argument('-p', '--print_string', ajuda='Imprimeix l'argument subministrat.', tipus=int)
args= analitzador.parse_args()
imprimir(args.print_string)
Proveu d'executar l'ordre següent:
$ ./prova.py-p LinuxHint.ambHauríeu d'obtenir un error com aquest:
ús: test.py [-h] [-p PRINT_STRING]test.py: error: argument -p / - print_string: valor int no vàlid: 'LinuxHint.com'
Si proporcioneu un valor enter, obtindreu el resultat correcte:
$ ./prova.py-p10001000Exemple 4: Maneig de commutadors de vertader i fals
Podeu passar arguments sense cap valor per tractar-los com a banderes True i False mitjançant l'argument d'acció.
importacióargparseanalitzador =argparse.ArgumentParser(descripció='Un programa de proves'.)
analitzador.add_argument('-p', '--print_string', ajuda='Imprimeix l'argument subministrat.',acció='store_true')
args= analitzador.parse_args()
imprimir(args.print_string)
Executeu l'ordre següent per obtenir un True com a sortida:
$ ./prova.py-pSi executeu l'script sense l'argument -p, s'assignarà un valor fals. El valor store_true de la paraula clau d'acció assigna un valor True a la variable print_string cada vegada que s'especifica explícitament l'argument -p, en cas contrari s'assigna False a la variable.
Exemple 5: tractar els valors dels arguments com a llista
Si voleu obtenir diversos valors alhora i emmagatzemar-los a la llista, heu de proporcionar la paraula clau nargs en el format següent:
importacióargparseanalitzador =argparse.ArgumentParser(descripció='Un programa de proves'.)
analitzador.add_argument('-p', '--print_string', ajuda='Imprimeix l'argument subministrat.',nargs='*')
args= analitzador.parse_args()
imprimir(args.print_string)
Executeu l'ordre següent per provar el codi anterior:
$ ./prova.py-p a bHauríeu d'obtenir una sortida així:
['a', 'b']Conclusió
El mòdul argparse és bastant complet amb moltes opcions per ajustar el comportament de les aplicacions de línia d'ordres i analitzar els valors subministrats per l'usuari. Aquests exemples només toquen l'ús bàsic del mòdul argparse. Per a aplicacions avançades i complexes, és possible que necessiteu implementacions diferents. Visiteu el documentació oficial per obtenir una explicació completa del mòdul.