Come aggiungere argomenti della riga di comando a uno script Python

Come aggiungere argomenti della riga di comando a uno script Python

Se hai sviluppato uno script Python o un'applicazione che si intende essere eseguiti principalmente in emulatori di termini o persino app per GUI, l'aggiunta di argomenti di riga di comando può migliorare la sua usabilità, leggibilità del codice, struttura dell'applicazione e cordialità generale dell'utente dell'applicazione per gli utenti finali. Questi argomenti della riga di comando sono anche chiamati "opzioni" o "switch" e funzionano in modo simile agli argomenti che si vedono di solito negli script bash e in altri programmi basati su C / C ++.

Per aggiungere argomenti agli script di Python, dovrai utilizzare un modulo integrato chiamato "ArgParse". Come suggerisce il nome, analizza gli argomenti della riga di comando utilizzati durante l'avvio di uno script o applicazione Python. Questi argomenti analizzati sono anche controllati dal modulo "Argparse" per assicurarsi che siano di "tipo". Gli errori vengono sollevati se ci sono valori non validi negli argomenti.

L'uso del modulo ArgParse può essere meglio compreso attraverso esempi. Di seguito sono riportati alcuni campioni di codice che ti faranno iniziare con il modulo ArgParse.

Esempio 1: generare argomento e messaggio di aiuto

Considera il campione di codice di seguito:

importare argparse
Parser = ArgParse.ArgumentParser (Descrizione = 'Un programma di test.')
args = parser.parse_args ()

La prima istruzione importa il modulo "Argparse". Successivamente, viene creata una nuova istanza di oggetto "ArgumentParser" e viene fornita una breve descrizione per il programma come argomento. L'oggetto ArgumentParser è necessario per convertire i valori dell'argomento della riga di comando in tipi di dati compresi da Python. Questo viene fatto dal metodo "parse_args" dell'oggetto argomento, come mostrato nell'ultima affermazione.

Supponendo di aver salvato il campione di codice sopra indicato in un file chiamato "Test.Py ”, Esecuzione dei comandi di seguito ti farà aiutare i messaggi relativi al programma.

$ ./test.py -h
$ ./test.Py - -Help

Dovresti ottenere un output in modo simile a questo:

Uso: test.py [-h]
Un programma di test.
Argomenti opzionali:
-H, -Help Mostra questo messaggio di aiuto ed uscita

Si noti che nessuna logica per gestire argomenti analizzati e convertirli in oggetti è stata aggiunta al campione di codice sopra menzionato. Quindi, i messaggi di aiuto per i singoli argomenti non sono mostrati nell'output. Una volta aggiunta la logica per la gestione dei valori degli argomenti analizzati nel programma, i messaggi di aiuto inizieranno a mostrare la descrizione per i singoli argomenti.

Esempio 2: gestire un argomento stringa

Per aggiungere argomenti accettabili dal tuo script Python, è necessario utilizzare il metodo "add_argument". Dai un'occhiata al seguente codice:

importare argparse
Parser = ArgParse.ArgumentParser (Descrizione = 'Un programma di test.')
parser.add_argument ("print_string", help = "stampa l'argomento fornito.")
args = parser.parse_args ()
Stampa (args.print_string)

È stata aggiunta una nuova istruzione che mostra l'uso del metodo "add_argument". Qualsiasi argomento aggiunto durante il lancio dello script verrà trattato come un oggetto "print_string" da "ArgumentParser".

Si noti che per impostazione predefinita, il metodo "add_argument" tratta i valori recuperati dagli argomenti come stringhe, quindi non è necessario specificare esplicitamente il "tipo" in questo caso. Un valore predefinito di "nessuno" è anche assegnato agli argomenti aggiunti, a meno che.

Ancora una volta dai un'occhiata al messaggio di aiuto:

Uso: test.py [-h] [print_string]
Un programma di test.
Argomenti posizionali:
print_string stampa l'argomento fornito.
Argomenti opzionali:
-H, -Help Mostra questo messaggio di aiuto ed uscita

Una delle linee in uscita dice "argomenti posizionali". Poiché non è definita alcuna parola chiave per argomento, attualmente l'argomento viene trattato come un "argomento posizionale" in cui l'ordine e la posizione dell'argomento fornito hanno un effetto diretto sul programma. Anche gli argomenti posizionali sono obbligatori, a meno che tu non cambi manualmente il loro comportamento.

Per definire e analizzare gli argomenti opzionali, è possibile utilizzare "-" (doppio trattino) e modificare i loro valori predefiniti usando l'argomento "predefinito".

importare argparse
Parser = ArgParse.ArgumentParser (Descrizione = 'Un programma di test.')
parser.add_argument ("-print_string", help = "stampa l'argomento fornito.", default =" una stringa casuale.")
args = parser.parse_args ()
Stampa (args.print_string)

Ora quando esegui “Test.Script Py "senza alcun argomento, dovresti ottenere" una stringa casuale."Come output. È inoltre possibile utilizzare facoltativamente la parola chiave "-print_string" per stampare qualsiasi stringa di tua scelta.

$ ./test.Py --print_string Linuxhint.com Linuxhint.com

Si noti che è possibile rendere obbligatorio un argomento opzionale utilizzando un argomento "richiesto = vero" aggiuntivo.

Infine, puoi anche definire le versioni stensa dell'argomento usando "-" (singolo trattino) per ridurre la verbosità.

importare argparse
Parser = ArgParse.ArgumentParser (Descrizione = 'Un programma di test.')
parser.add_argument ("-p", "--print_string", help = "stampa l'argomento fornito.", default =" una stringa casuale.")
args = parser.parse_args ()
Stampa (args.print_string)

L'esecuzione del seguente comando dovrebbe darti lo stesso risultato di cui sopra:

$ ./test.Py -p Linuxhint.com

Esempio 3: gestire un argomento intero

Per gestire gli argomenti che necessitano di valori interi, è necessario impostare la parola chiave "digitare" su "int" per consentire la convalida e lanciare errori nel caso in cui la condizione non sia soddisfatta.

importare argparse
Parser = ArgParse.ArgumentParser (Descrizione = 'Un programma di test.')
parser.add_argument ("-p", "--print_string", help = "stampa l'argomento fornito.", type = int)
args = parser.parse_args ()
Stampa (args.print_string)

Prova a eseguire il seguente comando:

$ ./test.Py -p Linuxhint.com

Dovresti ottenere un errore come questo:

Uso: test.py [-h] [-p print_string]
test.PY: Errore: argomento -p/-print_string: valore int non valido: 'linuxhint.com

Fornire un valore intero ti darà il risultato corretto:

$ ./test.PY -P 1000 1000

Esempio 4: gestire le levette vere e false

Puoi passare argomenti senza alcun valori per trattarli come flag vere e false usando l'argomento "azione".

importare argparse
Parser = ArgParse.ArgumentParser (Descrizione = 'Un programma di test.')
parser.add_argument ("-p", "--print_string", help = "stampa l'argomento fornito.", action =" store_true ")
args = parser.parse_args ()
Stampa (args.print_string)

Esegui il comando qui sotto per ottenere un semplice "vero" come output:

$ ./test.py -p

Se si esegue lo script senza l'argomento "-p", verrà invece assegnato un valore "falso". Il valore "Store_true" della parola chiave "Azione" assegna un valore "vero" alla variabile "print_string" ogni volta che l'argomento "-p" viene esplicitamente specificato, altrimenti falso viene assegnato alla variabile.

Esempio 5: tratta i valori degli argomenti come elenco

Se si desidera ottenere più valori contemporaneamente e archiviarli nell'elenco, è necessario fornire una parola chiave "NARGS" nel seguente formato:

importare argparse
Parser = ArgParse.ArgumentParser (Descrizione = 'Un programma di test.')
parser.add_argument ("-p", "--print_string", help = "stampa l'argomento fornito.", nargs = '*')
args = parser.parse_args ()
Stampa (args.print_string)

Esegui il comando seguente per testare il codice sopra:

$ ./test.py -p "a" "b"

Dovresti ottenere un output come questo:

['a', 'b']

Conclusione

Il modulo "ArgParse" è piuttosto completo con tonnellate di opzioni per modificare il comportamento delle applicazioni della riga di comando e analizzare i valori forniti dall'utente. Questi esempi toccano solo l'uso di base del modulo "Argparse". Per applicazioni avanzate e complesse, potrebbe essere necessario implementazioni diverse. Visita la documentazione ufficiale per una spiegazione completa del modulo.