sys.Argv in Python

sys.Argv in Python
Il modulo SYS è costituito da funzioni e variabili che interagiscono fortemente con l'interprete. Il modulo SYS è pre-caricato in Python e non richiede alcuna installazione. Tra le molte funzioni e variabili ci sono sys.argv (). Sys.Argv () viene utilizzato per raccogliere l'input dell'utente della riga di comando. In questo tutorial, imparare a conoscere SYS.argv () e i suoi usi comuni.

sys.argv

In sostanza, sys.argv () è un elenco di tutti gli ingressi della riga di comando. Quando viene eseguito lo script, è possibile alimentare il proprio input dell'utente in vari modi e uno di questo è tramite la riga di comando. In questo primo istanza, supponiamo che abbiamo una semplice sceneggiatura chiamata Main.Py.

Stampa ("Hello World")

Durante l'esecuzione dello script, aggiungeremo alcuni argomenti della riga di comando oltre al nome dello script. Se dovessimo eseguire lo script, otterremmo quanto segue:

$ Python3 Main.Py cosa stai facendo?
Ciao mondo

Noti qui che gli argomenti della riga di comando non interferiscono con lo script stesso.

Quindi, ora, modifichiamo un po 'lo script. Quindi, supponiamo che ora abbiamo una sceneggiatura chiamata Main.Py con i seguenti contenuti:

Import sys
Stampa (sys.argv)

Se dovessimo eseguire lo script, otterremmo quanto segue:

$ Python3 Main.Py
['principale.py ']

Come puoi vedere, otteniamo un elenco con un elemento perché l'abbiamo fornito solo un elemento, il nome dello script. Supponiamo ora che lo forniamo argomenti di input della riga di comando leggermente diversi.

Import sys
Stampa (sys.argv)

Se dovessimo eseguire lo script, otterremmo quanto segue:

$ Python3 Main.Py Hello World
['principale.Py, "Ciao", World ']

Ora, ciò che succede è che recupera tutto ciò che abbiamo fornito tramite la riga di comando o tutti gli argomenti della riga di comando forniti dall'utente. Nel mio caso, ho aggiunto "Hello World" dopo il nome della sceneggiatura e, come tale, l'ho recuperato all'elenco.

sys.argv [0]

Sys.argv [0] è il primo argomento nell'elenco. In tutti i casi, il primo argomento è sempre il nome dello script.

Import sys
name_of_script = sys.argv [0]
print (name_of_script)

Durante l'esecuzione dello script, digitare quanto segue:

$ Python3 Main.Py
principale.Py

sys.argv [n]

In alternativa, potresti voler recuperare un argomento specifico della riga di comando. Ad esempio, potresti voler recuperare l'ingresso dell'utente tramite gli argomenti della riga di comando quando si scrive un programma Python. In questo scenario, recupereremo i primi tre argomenti della riga di comando.

Import sys
name1 = sys.argv [1]
name2 = sys.argv [2]
name3 = sys.argv [3]
print ("ciao", nome1, ',', nome2, 'e', ​​nome3)

Durante l'esecuzione dello script, definiremmo quanto segue, ad esempio:

$ Python3 Main.Py Trevor Travis Tim
Ciao Trevor, Travis e Tim

Qui, sys.argv [1] è l'argomento della seconda riga di comando, mentre SYS.argv [2] è l'argomento della terza riga di comando e sys.Argv [3] è l'argomento della quarta riga di comando. Questo è così perché sebbene l'indice inizi a 0 e sys.argv [0] è il nome dello script.

E se l'utente doveva inserire n numero di input e non sapessimo quanti input ci fossero? Supponiamo che sia stato scritto la seguente sceneggiatura:

Import sys
Elenco = sys.argv [1:]
per valore nell'elenco:
Stampa (valore)

Durante l'esecuzione dello script, definiremmo quanto segue, ad esempio:

$ Python3 Main.Py Hello Trevor Travis e Tim
Ciao
Trevor
Travis
E
Tim

Qui, sys.argv [1:] significa che tutti i valori di SYS.argv [1] viene utilizzato fino alla fine dell'elenco. In questo caso, possiamo aggiungere tutti gli argomenti della riga di comando che vogliamo.

stringhe

Si prega di notare che tutti i valori acquisiti dal sistema variabile.argv sono stringhe. Supponiamo quindi che volessimo aggiungere tre numeri che l'utente input.

Import sys
num1 = sys.argv [1]
num2 = sys.argv [2]
num3 = sys.argv [3]
List = [NUM1, NUM2, NUM3]
totale = somma (elenco)
Stampa (totale)

Se dovessimo eseguire lo script, otterremmo quanto segue:

$ Python3 Main2.Py 3 4 5
TAYEERROR: tipo (S) oper e) non supportato per +: 'int' e 'str'

Quello che otteniamo è un typeerror. Questo perché tutti i valori ottenuti dall'elenco sono valori di "stringa" mentre richiediamo che i valori interi. Per correggere ciò, dovremmo convertire le stringhe in numeri interi:

Import sys
num1 = int (sys.argv [1])
num2 = int (sys.argv [2])
num3 = int (sys.argv [3])
List = [NUM1, NUM2, NUM3]
totale = somma (elenco)
Stampa (totale)

Se dovessimo eseguire lo script, otterremmo quanto segue:

$ Python3 Main2.Py 3 4 5
12

Abbiamo aggiunto int (sys.arg [n]) ha assicurato di convertire la stringa in un numero intero.

Sys.errori argv

Uno degli errori più comuni che vengono lanciati (quando non usiamo sys.argv [1:] ma piuttosto specificare il valore nth usando sys.argv [n]) è quello di un indicerror (indice di elenco fuori porta). Ciò che questo errore significa è che gli argomenti della riga di comando non sono stati specificati e, per evitare questo errore, dobbiamo adottare alcuni passaggi precauzionali:

Import sys
Se len (sys.argv) 4:
Stampa ("Immettere tre nomi")
Se len (sys.arv) == 4:
name1 = sys.argv [1]
name2 = sys.argv [2]
AME3 = sys.argv [3]
stampa ("ciao", nome1)
stampa ("ciao", nome2)
stampa ("ciao", nome3)

Durante l'esecuzione dello script, definiremmo quanto segue, ad esempio:

$ Python3 Main.Py Travis Trevor Tim
Ciao Travis
Ciao Trevor
Ciao Tim

Per evitare l'errore, dobbiamo regolare la lunghezza degli argomenti della riga di comando. Nell'esempio precedente, abbiamo tre nomi e un nome di script, il che significa che ci sono un totale di 4 valori. Pertanto, diciamo che se la lunghezza è maggiore di 4 o meno di 4, chiediamo all'utente di inserire tre nomi; altro, stampare i tre nomi.

Il modulo SYS è molto importante in quanto consente l'interazione con l'interprete di Python. In particolare, il sistema variabile.Argv è un elenco che contiene tutti gli argomenti della riga di comando immessi degli utenti. Sys.argv [0] definisce il nome dello script in tutti i casi. Sebbene sys.Argv () è molto comunemente utilizzato per raccogliere argomenti della riga di comando, un altro modo ancora migliore per raccogliere argomenti della riga di comando è usare ArgParse. Ma questa è una storia per un altro giorno!