2013-04-13 3 views
-3

часть сценарияsys.argv: список indedx из диапазона

if sys.argv[1] == 'help': 
    help() 
elif len(sys.argv) < 5: 
    use() 
else: 
    pass 


host = sys.argv[1] 
username = sys.argv[2] 
password = sys.argv[3] 
node = sys.argv[4] 
opts = sys.argv[5] 

это только часть кода, где проблема встречающихс .. когда я запускаю его, произошла ошибка:

host = sys.argv[1] 

IndexError : индекс индекса за пределами допустимого диапазона

Все работали хорошо, но я просто переустановил python. Но теперь это создает проблему. Это хорошо работает в Linux.

«В результате поиска я узнал, что« .py ассоциация в реестре неверна. В конце отсутствует% * ». но, я не знаю, как это исправить

Текущий путь установки в среде переменной C:. \ python27; C: \ python27 \ Lib \ сайт-пакеты \; C: \ python27 \ Scripts \

+4

Вы могли бы показать нам командную строку, которую вы вызываете скриптом python? –

+0

Всегда проверяйте (минимально необходимую) длину списка, прежде чем пытаться вызвать записи (в данном случае - параметры). Вы должны оценить свой вклад. – 2013-04-13 09:50:05

+0

Еще раз отметим: Все работали хорошо, но я просто переустановил python. Но теперь это создает проблему. Это хорошо работает в Linux. «В результате поиска я узнал, что« .py ассоциация в реестре неверна. В конце отсутствует% *. но я не знаю, как это исправить. Текущий путь установки в переменной окружения - C: \ Python27; C: \ Python27 \ Lib \ site-packages \; C: \ Python27 \ Scripts \ – Lady

ответ

3

sys.argv список, как и любой другой, за исключением того, что он создан из командной строки.

это не так много деталей, как указаны в командной строке используется для запуска сценария.

код был никогда правильно, и проблема не связана с вашими ассоциациями файлов Python или с вашим путем. (Если это так, вы получите ошибку из командной строки, но вместо этого вы получаете сообщение об ошибке, которая приходит из Python.)

Проблема заключается в том, что вы предполагаете, будет sys.argv[1], путем проверки 'help' перед любой проверкой длины sys.argv. Если скрипт запущен без каких-либо аргументов, то индекс [1] выходит за пределы допустимого диапазона.

+0

нет даже после предоставления аргументов .. он не работает. Кроме того, еще раз упомянем, что он хорошо работает в Linux и хорошо работает до того, как я переустановил python на окнах тоже – Lady

+0

Вы пробовали настроить программу, чтобы показать вам, что она думает, 'sys.argv' содержит? –

+0

Я пробовал все, даже сделал индивидуальный другой скрипт. даже thatz не работает хорошо – Lady