Когда вы запускаете программу из командной строки, она получает аргументы из программы командной строки (программа оболочки, такая как bash в * nix, приглашение cmd в Windows). Пример, вероятно, поможет:
> python my_program Brandon GreenMatt
В этом случае вы указываете программе командной строки выполнить python. Аргументы, которые вы указываете python: «my_program», «Brandon» и «GreenMatt». В свою очередь, python пытается найти и запустить программу с именем "my_program", которая получит аргументы "Brandon" и "GreenMatt". Механизм обработки аргументов
Python - sys.argv , Первый аргумент - номер 0, то есть sys.argv [0] - будет именем программы. Другие аргументы будут загружены в sys.argv в порядке их появления в командной строке. Таким образом, в приведенном выше примере my_program увидит «Brandon» в sys.argv [1], а sys.argv [2] будет содержать «GreenMatt».
Когда в командной строке нет аргументов, Например:
> python my_program
, тогда sys.argv [1] и sys.argv [2] не будут содержать ничего, что приведет к появившейся ошибке. Кроме того, если вы загрузите программу в какую-то интерактивную среду Python и просто запустите ее, вы увидите эту ошибку.
Подробнее в документах .