Я пытаюсь выполнить очень простой скрипт. Он печатает только первый переданный аргумент.
Код
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
Любая помощь
Это может быть проблема с Windows: http://bugs.python.org/issue7936
Ваш сценарий в порядке, так как вы его выполняете неправильно.
C:>sample.py myname
Это использует обнаружение расширения файла Windows, чтобы запустить его с помощью интерпретатора python. Таким образом, аргументы могут быть потеряны. Попробуйте выполнить его следующим образом:
C:>python sample.py myname
Также см. Вопрос 7936.
try: arg = sys.argv[1] except IndexError: pass else: check(arg)