Ti sei mai chiesto come eseguire uno script Python usando gli argomenti della CLI? In questo articolo scopriremo come fare!
Immagina di avere uno script Python che si chiami “ilMioScript.py”, al suo interno hai una funzione che effettua una semplice somma, per intenderci:
def somma(a, b): print(f"La somma dei due numeri è: {a + b}")
Tuttavia hai la necessità di usare gli argomenti della CLI.
Detto in termini meno tecnichesi, ti piacerebbe lanciare il tuo script da una finestra terminale inserendo direttamente questi due numeri nella CLI.
Per farla semplice qualcosa come:
python ilMioScript.py 5 6
E come output aspettarti:
La somma dei due numeri è: 11
La cosa è fattibile, anzi fattibilissima.
Per poterlo fare, dobbiamo utilizzare la libreria sys e la magica potenza di “if __name__ == “__main__” che se non sai cosa fa, ti invito a cliccare proprio dove l’ho scritto 😀
La libreria sys invece, ci permette di carpire gli argomenti della CLI e usarli all’interno del nostro script!
Per intenderci:
if __name__ == "__main__": a = int(sys.argv[1]) b = int(sys.argv[2])
Avrai fatto sicuramente caso al fatto che ho invocato il parametro “argv”.
Questo parametro, contiene tutti gli argomenti della CLI inseriti quando eseguiamo il nostro script Python a finestra terminale.
E avrai fatto sicuramente caso al fatto che è un vettore.
In estrema sintesi, “sys.argv” quando vogliamo eseguire il nostro script Python conterrà tutti gli argomenti della CLI da noi stessi inseriti.
E indovina un po’? Esattamente: vanno in ordine di scrittura.
In altre parole, tornando all’introduzione di prima:
python ilMioScript.py 4 5
“sys.argv[1]” conterrà “4”, mentre “sys.argv[2]” conterrà 5.
Perciò, per arrivare al nostro esempio completo:
#importiamo la libreria import sys #dichiariamo la funzione def somma(a, b): print(f"La somma dei due numeri è: {a + b}") #realizziamo il codice necessario ad eseguire lo script come main if __name__ == "__main__": #recuperiamo i valori degli argomenti inseriti a CLI a = int(sys.argv[1]) b = int(sys.argv[2]) #eseguiamo la nostra funzione somma(a, b)
Ah giusto, per completezza: li ho “castati” a int.
Perché? Beh, diciamo che una funzione che somma due numeri non funziona troppo bene con delle stringhe 😀
Tuttavia non è l’unica soluzione, ne possiamo usare una un po’ più avanzata ecco.
Come eseguire script Python usando gli argomenti della CLI e dandogli un nome!
Ti piacerebbe eseguire lo script dando un nome ai tuoi argomenti? Per intenderci qualcosa come:
python ilMioScript.py --valore1=2 --valore2=3
Questa volta dobbiamo usare la libreria “argparse”.
Il suo funzionamento è pressoché identico a “sys”, tuttavia permette di dare un nome agli argomenti della CLI, persino un tipo e addirittura un valore di default!
Per farla breve, basta adattare le seguenti modifiche allo script precedente:
import argparse def hello(a,b): print(f"La somma dei due numeri è: {a + b}") if __name__ == "__main__": #Imposto una descrizione per lo script parser = argparse.ArgumentParser(description='Script usato per fare la somma.') #Imposto i due argomenti della CLI con nome, tipo e valore di default parser.add_argument("--valore1", type=int, default=1) parser.add_argument("--valore2", type=int, default=2) #Eseguo il parsing degli argomenti args = parser.parse_args() #Li associo a due variabili a = args.valore1 b = args.valore2 hello(a, b)