Vorrei sottolineare che le risposte precedenti hanno formulato molte ipotesi sulla conoscenza dell'utente. Questa risposta tenta di rispondere alla domanda a un livello più tutorial.
Per ogni invocazione di Python, sys.argvè automaticamente un elenco di stringhe che rappresentano gli argomenti (come separati da spazi) sulla riga di comando. Il nome deriva dalla convenzione di programmazione C in cui argv e argc rappresentano gli argomenti della riga di comando.
Avrai voglia di saperne di più su liste e stringhe mentre ti familiarizzi con Python, ma nel frattempo, ecco alcune cose da sapere.
Puoi semplicemente creare uno script che stampa gli argomenti mentre vengono rappresentati. Stampa anche il numero di argomenti, usando illen funzione nell'elenco.
from __future__ import print_function
import sys
print(sys.argv, len(sys.argv))
Lo script richiede Python 2.6 o successivo. Se chiami questo script print_args.py, puoi invocarlo con diversi argomenti per vedere cosa succede.
> python print_args.py
['print_args.py'] 1
> python print_args.py foo and bar
['print_args.py', 'foo', 'and', 'bar'] 4
> python print_args.py "foo and bar"
['print_args.py', 'foo and bar'] 2
> python print_args.py "foo and bar" and baz
['print_args.py', 'foo and bar', 'and', 'baz'] 4
Come puoi vedere, gli argomenti della riga di comando includono il nome dello script ma non il nome dell'interprete. In questo senso, Python considera lo script come eseguibile. Se hai bisogno di conoscere il nome dell'eseguibile (python in questo caso), puoi usare sys.executable.
Si può vedere dagli esempi che è possibile ricevere argomenti che contengono spazi se l'utente ha invocato lo script con argomenti incapsulati tra virgolette, quindi quello che si ottiene è l'elenco di argomenti fornito dall'utente.
Ora nel tuo codice Python, puoi usare questo elenco di stringhe come input per il tuo programma. Poiché gli elenchi sono indicizzati da numeri interi in base zero, è possibile ottenere i singoli elementi utilizzando la sintassi dell'elenco [0]. Ad esempio, per ottenere il nome dello script:
script_name = sys.argv[0] # this will always work.
Sebbene interessante, raramente è necessario conoscere il nome dello script. Per ottenere il primo argomento dopo lo script per un nome file, è possibile effettuare le seguenti operazioni:
filename = sys.argv[1]
Questo è un utilizzo molto comune, ma nota che fallirà con IndexError se non viene fornito alcun argomento.
Inoltre, Python ti consente di fare riferimento a una porzione di un elenco, quindi per ottenere un altro elenco solo degli argomenti forniti dall'utente (ma senza il nome dello script), puoi fare
user_args = sys.argv[1:] # get everything after the script name
Inoltre, Python consente di assegnare una sequenza di elementi (compresi gli elenchi) ai nomi delle variabili. Quindi, se ti aspetti che l'utente fornisca sempre due argomenti, puoi assegnare quegli argomenti (come stringhe) a due variabili:
user_args = sys.argv[1:]
fun, games = user_args # len(user_args) had better be 2
Quindi, per rispondere alla tua domanda specifica, sys.argv[1]rappresenta il primo argomento della riga di comando (come a string) fornito allo script in questione. Non richiederà input, ma non riuscirà con IndexError se non viene fornito alcun argomento sulla riga di comando che segue il nome dello script.