Video Corso Base di Python 3

27: Passare parametri da riga di comando con SYS.ARGV

Ciao a tutti ragazzi e ragazze! In questa lezione spiegheremo come passare parametri al nostro script tramite riga di comando, usando la funzione argv del modulo sys.

argv sta per "argument variable": si tratta semplicemente di una lista di stringhe contenente i parametri che vengono passati allo script quando lo state richiamando. Se avete utilizzato degli script in Python in passato, con buona probabilità sapete chiaramente a cosa mi sto riferendo!

Avete presente quando, all'avvio di uno script da riga di comando, date qualche opzione tipo:

python nome_script.py yes -b

Be, con buona probabilità, quello script sta utilizzando il modulo sys.

Il primo parametro della lista argv, quindi il valore ad indice 0, è sempre il nome dello script.

Il resto dei valori è ordinato secondo l'ordine in cui sono stati passati.

Facciamo una prova:

import sys
print(sys.argv)

Ora salviamo il file e richiamiamolo da riga di comando:

>>> python lezione_26.py primo_parametro secondo_parametro 3

['lezione_26.py', 'primo_parametro', 'secondo_parametro', '3']

Una volta capito questo concetto, possiamo fare qualcosa come:

import sys
nome_script, primo, secondo = sys.argv

print(f"""
Il nome dello script è: {nome_script}
Il primo parametro passato è: {primo}
Il secondo parametro passato è: {secondo}""")

E ottenere quindi:

>>> python lezione_26.py alfa bravo

Il nome dello script è: lezione_26.py
Il primo parametro passato è: alfa
Il secondo parametro passato è: bravo

Di norma è bene controllare che allo script siano stati passati abbastanza parametri prima di assegnarli ad eventuali variabili, quindi tenendo a mente che il primo parametro è sempre il nome dello script possiamo fare:

if len(sys.argv) < 3:
    print("Devi passare due parametri allo script!")
    print("Sto uscendo...")
    sys.exit()

Una volta che avete i parametri potete chiaramente farci tutto quello che vi pare. Ad esempio:

if primo == "info":
    print("Questa è la lezione 26, dedicata a SYS.ARGV")

oppure:

# nel file lezione_26.py

def sommatoria(a,b):
    somma = int(a) + int(b)    
    print(f"La somma dei due valori è: {somma}")

sommatoria(primo,secondo)
# richiamiamo il file lezione_26.py

>>> python lezione_26.py 12 24
La somma dei due valori è: 36

Menu della Serie