Com afegir arguments de línia d'ordres a un script Python

How Add Command Line Arguments Python Script



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óargparse

analitzador =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óargparse

analitzador =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.com

Tingueu 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óargparse

analitzador =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.amb

Exemple 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óargparse

analitzador =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.amb

Haurí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-p10001000

Exemple 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óargparse

analitzador =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-p

Si 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óargparse

analitzador =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 b

Haurí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.