IndexError: список индексов вне диапазона, если аргумент не указан - PullRequest
0 голосов
/ 18 февраля 2020

Я просто хочу знать, почему этот код генерирует IndexError: list index out of range, когда ему не предоставлен аргумент?

script.py

import sys
a = sys.argv[1]
print(a)

Пример вывода с аргументом / s

user@linux:~$ python3 script.py abc
abc
user@linux:~$ python3 script.py abc def
abc
user@linux:~$

Пример вывода без аргумента / с

user@linux:~$ python3 script.py
Traceback (most recent call last):
  File "script.py", line 2, in <module>
    a = sys.argv[1]
IndexError: list index out of range
user@linux:~$

Моя ссылка: https://www.pythonforbeginners.com/system/python-sys-argv

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Примечание: sys.argv возвращает:

Список аргументов командной строки, переданных сценарию Python. argv [0] - это имя скрипта (зависит от операционной системы, является ли это полным путем или нет).

Проблема в том, что при запуске скрипта без аргументов, таких как python3 script.py, вы пытаемся получить доступ к элементу на index 1, используя sys.argv[1], но на самом деле этот элемент даже не существует в списке. Поэтому интерпретатор python выдает IndexError.

Надеюсь, это поможет вам понять!

1 голос
/ 18 февраля 2020

Список sys.argv содержит аргументы командной строки (индекс 0 - это сама команда, остальные - аргументы). Таким образом, если вы не предоставите аргумент, список содержит только один элемент (только sys.argv[0]).

Вот официальная Python документация.

...