Я хотел бы отметить, что предыдущие ответы сделали много предположений о знаниях пользователя. Этот ответ пытается ответить на вопрос на более обучающем уровне.
Для каждого вызова Python sys.argvавтоматически создается список строк, представляющих аргументы (разделенные пробелами) в командной строке. Название происходит от соглашения по программированию на C, в котором argv и argc представляют аргументы командной строки.
Вы захотите узнать больше о списках и строках, когда будете знакомиться с Python, но пока вот несколько вещей, которые необходимо знать.
Вы можете просто создать скрипт, который печатает аргументы в том виде, в котором они представлены. Он также печатает количество аргументов, используя lenфункцию из списка.
from __future__ import print_function
import sys
print(sys.argv, len(sys.argv))
Сценарий требует Python 2.6 или более поздней версии. Если вы вызываете этот скрипт print_args.py, вы можете вызвать его с другими аргументами, чтобы увидеть, что происходит.
> 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
Как видите, аргументы командной строки включают имя сценария, но не имя интерпретатора. В этом смысле Python рассматривает скрипт как исполняемый файл. Если вам нужно знать имя исполняемого файла (в данном случае python), вы можете использовать sys.executable.
Из примеров видно, что можно получить аргументы, содержащие пробелы, если пользователь вызвал скрипт с аргументами, заключенными в кавычки, так что вы получите список аргументов, предоставленный пользователем.
Теперь в вашем коде Python вы можете использовать этот список строк в качестве входных данных для вашей программы. Поскольку списки индексируются целыми числами, начинающимися с нуля, вы можете получить отдельные элементы, используя синтаксис list [0]. Например, чтобы получить имя скрипта:
script_name = sys.argv[0] # this will always work.
Хотя это интересно, вам редко нужно знать имя вашего скрипта. Чтобы получить первый аргумент после скрипта для имени файла, вы можете сделать следующее:
filename = sys.argv[1]
Это очень распространенное использование, но обратите внимание, что оно завершится с ошибкой IndexError, если аргумент не был предоставлен.
Кроме того, Python позволяет ссылаться на фрагмент списка, поэтому, чтобы получить другой список только предоставленных пользователем аргументов (но без имени скрипта), вы можете сделать
user_args = sys.argv[1:] # get everything after the script name
Кроме того, Python позволяет назначать последовательность элементов (включая списки) именам переменных. Поэтому, если вы ожидаете, что пользователь всегда предоставит два аргумента, вы можете назначить эти аргументы (в виде строк) двум переменным:
user_args = sys.argv[1:]
fun, games = user_args # len(user_args) had better be 2
Итак, чтобы ответить на ваш конкретный вопрос, sys.argv[1]представляет первый аргумент командной строки (как string), предоставленный для рассматриваемого сценария. Он не будет запрашивать ввод, но завершится с ошибкой IndexError, если в командной строке после имени сценария не указаны аргументы.