Argumente de linie de comandă în Python
Argumentele care sunt date după numele programului în shell-ul liniei de comandă a sistemului de operare sunt cunoscute ca Argumente ale liniei de comandă . Python oferă diferite moduri de a trata aceste tipuri de argumente. Cele mai frecvente trei sunt:
Folosind sys.argv
Modulul sys oferă funcții și variabile utilizate pentru a manipula diferite părți ale mediului de rulare Python. Acest modul oferă acces la unele variabile utilizate sau întreținute de interpret și la funcții care interacționează puternic cu interpretul.
O astfel de variabilă este sys.argv care este o structură simplă de listă. Scopul său principal este:
- Este o listă de argumente ale liniei de comandă.
- len(sys.argv) furnizează numărul de argumente ale liniei de comandă.
- sys.argv[0] este numele scriptului Python curent.
Exemplu: Să presupunem că există un script Python pentru adăugarea a două numere și numerele sunt transmise ca argumente de linie de comandă.
Python3
# Python program to demonstrate> # command line arguments> import> sys> # total arguments> n> => len> (sys.argv)> print> (> 'Total arguments passed:'> , n)> # Arguments passed> print> (> '
Name of Python script:'> , sys.argv[> 0> ])> print> (> '
Arguments passed:'> , end> => ' '> )> for> i> in> range> (> 1> , n):> > print> (sys.argv[i], end> => ' '> )> > # Addition of numbers> Sum> => 0> # Using argparse module> for> i> in> range> (> 1> , n):> > Sum> +> => int> (sys.argv[i])> > print> (> '
Result:'> ,> Sum> )> |
Ieșire:
Folosind modulul getopt
Piton modul getopt este similară cu funcția getopt() a lui C. Spre deosebire de modulul sys, modulul getopt extinde separarea șirului de intrare prin validarea parametrilor. Permite atât opțiuni scurte, cât și lungi, inclusiv o atribuire de valoare. Cu toate acestea, acest modul necesită utilizarea modulului sys pentru a procesa corect datele de intrare. Pentru a utiliza modulul getopt, este necesar să eliminați primul element din lista de argumente ale liniei de comandă.
Sintaxă: getopt.getopt(args, options, [long_options])
Parametri:
argumente: Lista argumentelor care trebuie transmise.
Opțiuni: Șir de litere de opțiune pe care scriptul dorește să le recunoască. Opțiunile care necesită un argument ar trebui să fie urmate de două puncte (:).
Long_options: Lista de șir cu numele opțiunilor lungi. Opțiunile care necesită argumente ar trebui să fie urmate de un semn egal (=).
Tip returnare: Returnează valoare formată din două elemente: primul este o listă de perechi (opțiune, valoare). Al doilea este lista de argumente ale programului rămase după ce lista de opțiuni a fost eliminată.
Exemplu:
Python3
# Python program to demonstrate> # command line arguments> import> getopt, sys> # Remove 1st argument from the> # list of command line arguments> argumentList> => sys.argv[> 1> :]> # Options> options> => 'hmo:'> # Long options> long_options> => [> 'Help'> ,> 'My_file'> ,> 'Output='> ]> try> :> > # Parsing argument> > arguments, values> => getopt.getopt(argumentList, options, long_options)> > > # checking each argument> > for> currentArgument, currentValue> in> arguments:> > if> currentArgument> in> (> '-h'> ,> '--Help'> ):> > print> (> 'Displaying Help'> )> > > elif> currentArgument> in> (> '-m'> ,> '--My_file'> ):> > print> (> 'Displaying file_name:'> , sys.argv[> 0> ])> > > elif> currentArgument> in> (> '-o'> ,> '--Output'> ):> > print> ((> 'Enabling special output mode (% s)'> )> %> (currentValue))> > except> getopt.error as err:> > # output error, and return with an error code> > print> (> str> (err))> |
Ieșire:
Folosind modulul argparse
Utilizarea modulului argparse este o opțiune mai bună decât cele două opțiuni de mai sus, deoarece oferă o mulțime de opțiuni, cum ar fi argumente poziționale, valoarea implicită pentru argumente, mesaj de ajutor, specificarea tipului de date al argumentului etc.
Notă: Ca argument opțional implicit, include -h, împreună cu versiunea sa lungă –help.
Exemplul 1: Utilizarea de bază a modulului argparse.
Python3
# Python program to demonstrate> # command line arguments> import> argparse> # Initialize parser> parser> => argparse.ArgumentParser()> parser.parse_args()> |
Ieșire:
Exemplul 2: Adăugarea unei descrieri la mesajul de ajutor.
Python3
# Python program to demonstrate> # command line arguments> import> argparse> msg> => 'Adding description'> # Initialize parser> parser> => argparse.ArgumentParser(description> => msg)> parser.parse_args()> |
Ieșire:
Exemplul 3: Definirea valorii opționale
Python3
# Python program to demonstrate> # command line arguments> import> argparse> # Initialize parser> parser> => argparse.ArgumentParser()> # Adding optional argument> parser.add_argument(> '-o'> ,> '--Output'> ,> help> => 'Show Output'> )> # Read arguments from command line> args> => parser.parse_args()> if> args.Output:> > print> (> 'Displaying Output as: % s'> %> args.Output)> |
Ieșire: