#python #command-line-arguments #sys
#python #аргументы командной строки #sys
Вопрос:
import sys
print sys.argv[1]
привет,
это может показаться очень простым, но я не могу заставить Python читать что-либо из командной строки. это приведенный выше код, и я набираю:
myfile.py helloworld
и что я получаю в ответ:
IndexError: list index out of range
Мне показалось, что однажды это сработало для меня, но больше не будет работать, и я попытался удалить и переустановить Python, и он все еще не работает.
Итак, мой вопрос в том, я делаю что-то не так? или я просто сломал Python?
Спасибо за любую помощь
Использование: Windows 7 Python 2.7.2
Комментарии:
1. Что происходит, когда вы просто
print sys.argv
? И работает ли это при вызове файла черезpython.exe myfile.py helloworld
?2. ах, спасибо за ваши ответы, удалось заставить его работать. произошла очень глупая ошибка, не добавлял python в путь в системных переменных
3. Для тех, у кого возникли проблемы с передачей аргументов скрипту в Windows без добавления к нему вызова Python (например
python foo.py a
, работает, ноfoo.py a
не работает), прокрутите первый ответ.
Ответ №1:
Запустите редактор реестра (regedit). Установите ключ ключей Applicationspython26.exeshellopencommand на: "C:Python26python26.exe" "%1" %*
Источник этого решения: http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows /
Комментарии:
1. вау, это упущение в реестре поразило нас сегодня, мы пытались сбалансировать параллельную установку Python 2.7 Anaconda и 3.4. Установщик 3.4 опустил этот
%*
аргумент, но нам нужно было установить его какHKEY_CLASSES_ROOTApplicationspythonxx.exeshellopencommand
для ключа, так и дляHKEY_CLASSES_ROOTpy_auto_fileshellopencommand
ключа2. Спасибо за ваш ответ
Ответ №2:
Вы уверены, что вызываете свой скрипт на python так, как вы думаете?
#!/usr/bin/python
import sys
if len(sys.argv) < 2:
print "you did not give any argumentsn"
else:
print sys.argv[1]
ВОЗВРАТ:
$ ./foo.py
you did not give any arguments
$ ./foo.py hello_world
hello_world
$