Piton

Cum se adaugă argumente de linie de comandă unui script Python?

Cum se adaugă argumente de linie de comandă unui script Python?
Dacă ați dezvoltat un script sau o aplicație Python menit să fie executat în principal în emulatoarele de terminal sau chiar în aplicații GUI, atunci adăugarea argumentelor din linia de comandă poate îmbunătăți ușurința, lizibilitatea codului, structura aplicației și ușurința generală a aplicației pentru utilizatorii finali. Aceste argumente din linia de comandă se mai numesc „opțiuni” sau „comutatoare” și funcționează similar cu argumentele pe care le vedeți de obicei în scripturile bash și alte programe bazate pe C / C ++.

Pentru a adăuga argumente scripturilor Python, va trebui să utilizați un modul încorporat numit „Argparse”. După cum sugerează și numele, analizează argumentele din linia de comandă utilizate în timpul lansării unui script sau aplicație Python. Aceste argumente analizate sunt verificate și de modulul „argparse” pentru a se asigura că sunt de „tip” adecvat. Erorile sunt ridicate dacă există valori nevalide în argumente.

Utilizarea modulului argparse poate fi înțeleasă cel mai bine prin exemple. Mai jos sunt câteva exemple de coduri care vă vor ajuta să începeți cu modulul argparse.

Exemplul 1: Generați argumentul de ajutor și mesajul

Luați în considerare exemplul de cod de mai jos:

import argparse
parser = argparse.ArgumentParser (description = 'Un program de testare.')
args = parser.parse_args ()

Prima declarație importă modulul „argparse”. Apoi, se creează o nouă instanță a obiectului „ArgumentParser” și o scurtă descriere a programului este furnizată ca argument. Obiectul ArgumentParser este necesar pentru a converti valorile argumentelor din linia de comandă în tipuri de date înțelese de Python. Acest lucru se face prin metoda „parse_args” a obiectului ArgumentParser, așa cum se arată în ultima declarație.

Presupunând că ați salvat exemplul de cod menționat mai sus într-un fișier numit „test.py ”, rularea comenzilor de mai jos vă va ajuta să ajutați mesajele legate de program.

$ ./Test.py -h
$ ./Test.py --help

Ar trebui să obțineți o ieșire similară cu aceasta:

utilizare: test.py [-h]
Argumente opționale ale unui program de test:
-h, --help afișează acest mesaj de ajutor și ieși

Rețineți că nu a fost adăugată la eșantionul de cod menționat mai sus nicio logică pentru a trata argumentele analizate și a le converti în obiecte. Prin urmare, mesajele de ajutor pentru argumente individuale nu sunt afișate în rezultat. După ce adăugați logică pentru gestionarea valorilor argumentelor analizate în programul dvs., mesajele de ajutor vor începe să afișeze descrieri pentru argumente individuale.

Exemplul 2: gestionați un argument șir

Pentru a adăuga argumente acceptabile de scriptul Python, trebuie să utilizați metoda „add_argument”. Aruncați o privire la următorul cod:

import argparse
parser = argparse.ArgumentParser (description = 'Un program de testare.')
analizor.add_argument ("print_string", help = "Tipărește argumentul furnizat.")
args = parser.parse_args ()
print (arg.print_string)

A fost adăugată o nouă declarație, care arată utilizarea metodei „add_argument”. Orice argument adăugat la lansarea scriptului va fi tratat ca un obiect „print_string” de „ArgumentParser”.

Rețineți că, în mod implicit, metoda „add_argument” tratează valorile extrase din argumente ca șiruri, deci nu trebuie să specificați în mod explicit „tipul” în acest caz. O valoare implicită „Nici unul” este, de asemenea, atribuită argumentelor adăugate, dacă nu este suprascrisă.

Încă o dată, aruncați o privire asupra mesajului de ajutor:

utilizare: test.py [-h] [print_string]
Un argument de poziție al programului de testare:
print_string tipărește argumentul furnizat
argumente opționale:
-h, --help afișează acest mesaj de ajutor și ieși

Una dintre liniile din ieșire spune „argumente poziționale”. Deoarece nu este definit niciun cuvânt cheie pentru argument, în prezent argumentul este tratat ca un „argument pozițional” în care ordinea și poziția argumentului furnizat au un efect direct asupra programului. Argumentele poziționale sunt, de asemenea, obligatorii, cu excepția cazului în care le schimbați manual comportamentul.

Pentru a defini și analiza argumentele opționale, puteți utiliza „-” (liniuță dublă) și puteți modifica valorile implicite folosind argumentul „implicit”.

import argparse
parser = argparse.ArgumentParser (description = 'Un program de testare.')
analizor.add_argument ("- print_string", help = "Tipărește argumentul furnizat.", implicit =” Un șir aleatoriu.”)
args = parser.parse_args ()
print (arg.print_string)

Acum, când rulați „testul.py ”fără niciun argument, ar trebui să obțineți„ Un șir aleatoriu.”Ca ieșire. De asemenea, puteți utiliza opțional cuvântul cheie „-print_string” pentru a imprima orice șir la alegere.

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

Rețineți că puteți face obligatoriu un argument opțional utilizând un argument suplimentar „obligatoriu = Adevărat”.

În cele din urmă, puteți defini și versiunile de scurtare ale argumentului folosind „-” (o singură liniuță) pentru a reduce verbozitatea.

import argparse
parser = argparse.ArgumentParser (description = 'Un program de testare.')
analizor.add_argument (“- p”, "--print_string", help = "Tipărește argumentul furnizat.", implicit =” Un șir aleatoriu.”)
args = parser.parse_args ()
print (arg.print_string)

Rularea următoarei comenzi ar trebui să vă ofere același rezultat ca mai sus:

$ ./Test.py -p LinuxHint.com

Exemplul 3: gestionați un argument întreg

Pentru a gestiona argumentele care necesită valori întregi, trebuie să setați cuvântul cheie „type” la „int” pentru a permite validarea și aruncarea erorilor în cazul în care condiția nu este îndeplinită.

import argparse
parser = argparse.ArgumentParser (description = 'Un program de testare.')
analizor.add_argument ("- p", "--print_string", help = "Tipărește argumentul furnizat.", tastați = int)
args = parser.parse_args ()
print (arg.print_string)

Încercați să rulați următoarea comandă:

$ ./Test.py -p LinuxHint.com

Ar trebui să primiți o astfel de eroare:

utilizare: test.py [-h] [-p PRINT_STRING]
Test.py: eroare: argument -p / - print_string: valoare int invalidă: 'LinuxHint.com '

Furnizarea unei valori întregi vă va oferi rezultatul corect:

$ ./Test.py -p 1000 1000

Exemplul 4: Manevrați comutările adevărate și false

Puteți transmite argumente fără nicio valoare pentru a le trata drept steaguri True și False folosind argumentul „acțiune”.

import argparse
parser = argparse.ArgumentParser (description = 'Un program de testare.')
analizor.add_argument ("- p", "--print_string", help = "Tipărește argumentul furnizat.", action =" store_true ")
args = parser.parse_args ()
print (arg.print_string)

Rulați comanda de mai jos pentru a obține un „True” simplu ca ieșire:

$ ./Test.py -p

Dacă rulați scriptul fără argumentul „-p”, va fi atribuită o valoare „False”. Valoarea „store_true” a cuvântului cheie „action” atribuie o valoare „True” variabilei „print_string” ori de câte ori argumentul „-p” este specificat în mod explicit, altfel False este atribuit variabilei.

Exemplul 5: Tratați valorile argumentelor ca listă

Dacă doriți să obțineți mai multe valori simultan și să le stocați în listă, trebuie să furnizați cuvântul cheie „nargs” în următorul format:

import argparse
parser = argparse.ArgumentParser (description = 'Un program de testare.')
analizor.add_argument ("- p", "--print_string", help = "Tipărește argumentul furnizat.", nargs = '*')
args = parser.parse_args ()
print (arg.print_string)

Rulați următoarea comandă pentru a testa codul de mai sus:

$ ./Test.py -p „a” „b”

Ar trebui să obțineți o astfel de ieșire:

['a', 'b']

Concluzie

Modulul „argparse” este destul de complet, cu o mulțime de opțiuni pentru modificarea comportamentului aplicațiilor din linia de comandă și analizarea valorilor furnizate de utilizator. Aceste exemple se referă doar la utilizarea de bază a modulului „argparse”. Pentru aplicații avansate și complexe, este posibil să aveți nevoie de implementări diferite. Accesați documentația oficială pentru o explicație completă a modulului.

Cele mai bune jocuri Oculus App Lab
Dacă sunteți proprietarul căștilor Oculus, atunci trebuie să fiți informați despre încărcarea laterală. Încărcarea laterală este procesul de instalare...
Top 10 jocuri de jucat pe Ubuntu
Platforma Windows a fost una dintre platformele dominante pentru jocuri din cauza procentului imens de jocuri care se dezvoltă astăzi pentru a sprijin...
Cele mai bune 5 jocuri arcade pentru Linux
În zilele noastre, computerele sunt mașini serioase folosite pentru jocuri. Dacă nu puteți obține noul scor mare, veți ști la ce mă refer. În această ...