lettura normale

Il parsing degli argomenti passati da linea comando in Python

In questa lezione del corso Python vediamo come fare il parsing degli argomenti passati da linea di comando.

Cos'è il parsing degli argomenti? Quando esegui uno script in Python, puoi passare dei parametri specifici allo script. Queste informazioni sono recepite dallo script tramite il parsing ed elaborate. In altre parole, il parser è l'analisi della stringa che contiene questi parametri (o argomenti).

Ad esempio, immagina di avere un semplice script saluta.py che scrive "Ciao" seguito dal nome della persona.

Il nome della persona deve però essere indicato dall'utente quando esegue lo script tramite l'aggiunta di un parametro.

saluta.py Tom

Dobbiamo fare in modo che lo script "saluta.py" sia in grado di leggere il parametro esterno con l'informazione "Tom". Per farlo, ricorriamo al parsing tramite il modulo sys.

Scrivi questo codice in uno script e salvalo in un file chiamato "saluta.py" sul tuo computer.

  1. import sys
  2. # Controlla se l'utente ha fornito un argomento (nome)
  3. if len(sys.argv) > 1:
  4.     # Prende il primo argomento da linea di comando (dopo il nome dello script)
  5.     nome = sys.argv[1]
  6.     print(f"Ciao, {nome}!") # Stampa il saluto
  7. else:
  8.     print("Per favore, inserisci un nome.")

In Python i parametri (o argomenti) sono salvati automaticamente in una lista di sistema chiamata sys.argv.

Ricorda che i parametri sono salvati nella lista come stringhe. Quindi, se stai passando un valore numerico, nello script dovrai convertirlo in numero.

 

Una volta salvato lo script, eseguilo dalla linea di comando indicando un nome qualsiasi come argomento.

python saluta.py Tom

Ricorda di separare sempre il nome dello script "saluta.py" e l'argomento "Tom" con uno spazio.

Questo comando esegue il parser e fa stampare allo script "Ciao, Tom!" sullo schermo.

Ciao Tom!

Ora esegui lo script passandogli un altro nome. Ad esempio "Mary".

python saluta.py Mary

In questo caso lo script visualizza "Ciao Mary!"

Ciao Mary!

Se esegui lo script senza alcun argomento, ti chiederà di inserire un nome.

E' un esempio molto semplice ma è molto utile per spiegare cos'è e come funziona il parsing degli argomenti nel linguaggio Python.

Come passare due o più argomenti?

E' molto semplice. Ti basta recepire i due parametri tramite i loro indici 1 e 2.

Ad esempio, modifica lo script saluta.py per accettare due argomenti – un nome e un numero intero:

  1. import sys
  2. # Controlla se l'utente ha fornito due argomenti (nome e numero)
  3. if len(sys.argv) == 3:
  4.     # Prende il primo argomento (nome)
  5.     nome = sys.argv[1]
  6.     try:
  7.         # Prova a convertire il secondo argomento in un numero intero
  8.         numero = int(sys.argv[2])
  9.         # Stampa il messaggio a video con le informazioni ricevute
  10.         print(f"Ciao, {nome}! Hai inserito il numero {numero}.")
  11.     except ValueError:
  12.         print("Per favore, inserisci un numero valido.")
  13.     else:
  14.         print("Inserisci esattamente due argomenti: un nome e un numero.")

Questo script controlla se sono stati forniti esattamente due argomenti tramite la condizione len(sys.argv)==3.

Se è così, prova a convertire il secondo argomento in un numero intero. Se la conversione fallisce, viene stampato un messaggio di errore.

Se gli argomenti non sono due, lo script fornisce un messaggio di errore appropriato.

La ragione per cui usiamo len(sys.argv) == 3 e non 2 nel controllo dell'argomento è legata al fatto che gli argomenti passati da linea comando sono memorizzati nella lista sys.argv da Python e il primo elemento della lista è sempre il nome del programma. Quindi, anche se non passi alcun argomento, sys.argv avrà almeno un elemento nell'indice 0. Il primo parametro ha l'indice 1. Il secondo parametro ha l'indice 2. E via dicendo.

Ora esegui questo script con due argomenti da linea di comando:

python saluta.py Tom 5

Questo fa stampare allo script

Ciao, Tom! Hai inserito il numero 5

Usando questa tecnica puoi realizzare script che accettano due, tre o più argomenti.

Nel resto del nostro corso vedremo anche altri modi per fare il parsing degli argomenti da linea comando.




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin