Pitone

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 o un'applicazione Python pensata per essere eseguita principalmente negli emulatori di terminale o persino nelle app della GUI, l'aggiunta di argomenti della riga di comando può migliorare la sua usabilità, leggibilità del codice, struttura dell'applicazione e la facilità d'uso complessiva gli utenti finali. Questi argomenti della riga di comando sono anche chiamati "opzioni" o "switch" e funzionano in modo simile agli argomenti che di solito si vedono negli script bash e in altri programmi basati su C/C++.

Per aggiungere argomenti agli script Python, dovrai usare un modulo integrato chiamato “argparse”. Come suggerisce il nome, analizza gli argomenti della riga di comando utilizzati durante l'avvio di uno script o di un'applicazione Python. Questi argomenti analizzati vengono anche controllati dal modulo "argparse" per garantire che siano del "tipo" corretto. Vengono generati errori se ci sono valori non validi negli argomenti.

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

Esempio 1: generazione di argomenti e messaggi di aiuto Help

Considera l'esempio di codice seguente:

import argparse
parser = argparse.ArgumentParser(description='Un programma di prova.')
args = parser.parse_args()

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

Supponendo che tu abbia salvato il codice di esempio sopra indicato in un file chiamato "test.py", l'esecuzione dei comandi seguenti ti consentirà di aiutare i messaggi relativi al programma.

$ ./test.py -h
$ ./test.py --help

Dovresti ottenere un output simile a questo:

utilizzo: test.pi [-h]
Un programma di test argomenti opzionali:
-h, --help mostra questo messaggio di aiuto ed esce

Nota che nessuna logica per gestire gli argomenti analizzati e convertirli in oggetti è stata aggiunta all'esempio di codice menzionato sopra. Quindi, i messaggi di aiuto per i singoli argomenti non vengono mostrati nell'output. Una volta aggiunta la logica per la gestione dei valori degli argomenti analizzati nel tuo programma, i messaggi di aiuto inizieranno a mostrare le descrizioni per i singoli argomenti.

Esempio 2: gestire un argomento stringa

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

import argparse
parser = argparse.ArgumentParser(description='Un programma di prova.')
analizzatore.add_argument("print_string", help="Stampa l'argomento fornito.")
args = parser.parse_args()
print(argomenti.print_string)

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

Nota che per impostazione predefinita, il metodo "add_argument" tratta i valori recuperati dagli argomenti come stringhe, quindi non devi specificare esplicitamente il "tipo" in questo caso. Un valore predefinito di "Nessuno" viene assegnato anche agli argomenti aggiunti, a meno che non vengano sovrascritti.

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

utilizzo: test.py [-h] [stringa_stampa]
Argomenti posizionali di un programma di prova:
print_string stampa l'argomento fornito
argomenti facoltativi:
-h, --help mostra questo messaggio di aiuto ed esce

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

Per definire e analizzare argomenti facoltativi, puoi utilizzare "-" (doppio trattino) e modificare i loro valori predefiniti utilizzando l'argomento "predefinito".

import argparse
parser = argparse.ArgumentParser(description='Un programma di prova.')
analizzatore.add_argument("--print_string", help="Stampa l'argomento fornito.", default=”Una stringa casuale.”)
args = parser.parse_args()
print(argomenti.print_string)

Ora, quando esegui il "test.py" senza alcun argomento, dovresti ottenere "Una stringa casuale."come output. Puoi anche usare facoltativamente la parola chiave "-print_string" per stampare qualsiasi stringa di tua scelta.

$ ./test.py --print_string LinuxHint.come
LinuxSuggerimento.come

Nota che puoi rendere obbligatorio un argomento facoltativo utilizzando un argomento aggiuntivo "required=True".

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

import argparse
parser = argparse.ArgumentParser(description='Un programma di prova.')
analizzatore.add_argument(“-p”, "--print_string", help="Stampa l'argomento fornito.", default=”Una stringa casuale.”)
args = parser.parse_args()
print(argomenti.print_string)

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

$ ./test.py -p LinuxHint.come

Esempio 3: gestire un argomento intero

Per gestire argomenti che richiedono valori interi, è necessario impostare la parola chiave "type" su "int" per consentire la convalida e generare errori nel caso in cui la condizione non venga soddisfatta.

import argparse
parser = argparse.ArgumentParser(description='Un programma di prova.')
analizzatore.add_argument("-p", "--print_string", help="Stampa l'argomento fornito.", tipo=int)
args = parser.parse_args()
print(argomenti.print_string)

Prova a eseguire il seguente comando:

$ ./test.py -p LinuxHint.come

Dovresti ricevere un errore come questo:

utilizzo: test.py [-h] [-p STAMPA_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 i toggle True e False

Puoi passare argomenti senza alcun valore per trattarli come flag Vero e Falso usando l'argomento "azione".

import argparse
parser = argparse.ArgumentParser(description='Un programma di prova.')
analizzatore.add_argument("-p", "--print_string", help="Stampa l'argomento fornito.", azione="store_true")
args = parser.parse_args()
print(argomenti.print_string)

Esegui il comando seguente per ottenere un semplice "True" come output:

$ ./test.py -p

Se esegui lo script senza l'argomento "-p", verrà assegnato un valore "False". Il valore “store_true” della parola chiave “action” assegna un valore “True” alla variabile “print_string” ogni volta che viene esplicitamente specificato l'argomento “-p”, altrimenti viene assegnato False alla variabile.

Esempio 5: tratta i valori degli argomenti come elenco

Se vuoi ottenere più valori contemporaneamente e memorizzarli nell'elenco, devi fornire la parola chiave "nargs" nel seguente formato:

import argparse
parser = argparse.ArgumentParser(description='Un programma di prova.')
analizzatore.add_argument("-p", "--print_string", help="Stampa l'argomento fornito.", nargs='*')
args = parser.parse_args()
print(argomenti.print_string)

Esegui il seguente comando 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 a riga di comando e analizzare i valori forniti dall'utente. Questi esempi riguardano solo l'utilizzo di base del modulo "argparse". Per applicazioni avanzate e complesse, potrebbero essere necessarie diverse implementazioni different. Visita la documentazione ufficiale per una spiegazione completa del modulo.

Come installare League Of Legends su Ubuntu 14.04
Se sei un fan di League of Legends, questa è un'opportunità per testare League of Legends. Nota che LOL è supportato su PlayOnLinux se sei un utente L...
Installa l'ultimo gioco di strategia OpenRA su Ubuntu Linux
OpenRA è un motore di gioco di strategia in tempo reale gratuito/libero che ricrea i primi giochi di Westwood come il classico Command & Conquer: Red ...
Installa l'ultimo Dolphin Emulator per Gamecube e Wii su Linux
L'emulatore Dolphin ti consente di giocare ai giochi Gamecube e Wii scelti su Personal Computer Linux (PC). Essendo un emulatore di giochi liberament...