невозможно получить значение sys.argv [1]

1

Я пытаюсь выполнить очень простой скрипт. Он печатает только первый переданный аргумент.

Код

import sys
def check(argument):
  '''Open, read, and print a file.'''
  print argument

if __name__ == "__main__":
  check(sys.argv[1])

однако, когда я запускаю из командной строки, я всегда получаю эту ошибку

C:\>sample.py myname

Traceback (most recent call last):
  File "C:\sample.py", line 7, in <module>
    check(sys.argv[1])
IndexError: list index out of range

Любая помощь

  • 0
    Не имеет прямого отношения к вашему вопросу, но вы всегда должны фиксировать все возможные ошибки. Это включает проверку того, что указатели списка не выходят за пределы, например try: arg = sys.argv[1] except IndexError: pass else: check(arg)
Теги:

2 ответа

1
Лучший ответ

Это может быть проблема с Windows: http://bugs.python.org/issue7936

  • 0
    Это должен быть комментарий.
  • 3
    Почему? Он предлагает потенциальное решение, если вы прочитаете тему в сообщении об ошибке.
5

Ваш сценарий в порядке, так как вы его выполняете неправильно.

C:>sample.py myname

Это использует обнаружение расширения файла Windows, чтобы запустить его с помощью интерпретатора python. Таким образом, аргументы могут быть потеряны. Попробуйте выполнить его следующим образом:

C:>python sample.py myname

Также см. Вопрос 7936.

  • 0
    Спасибо, я выполнил шаги в выпуске 7936, чтобы отредактировать значения реестра, и это решило мою проблему

Ещё вопросы

Сообщество Overcoder
Наверх
Меню