Содержимое sys.argv при неявном вызове сценария Python в WindowsPython

Программы на Python
Ответить
Anonymous
 Содержимое sys.argv при неявном вызове сценария Python в Windows

Сообщение Anonymous »

У меня есть добавленные файлы .PY в переменную системной среды PATHEXT в Windows 7. Я также добавил C:\scripts в переменную PATH.

Предположим, у меня есть очень простой файл Python C:\Scripts\helloscript.py

Код: Выделить всё

print "hello"
Теперь я могу вызывать скрипты Python из консоли, используя:

Код: Выделить всё

C:\>helloscript
И вывод:
Если я изменю сценарий, чтобы сделать его более динамичным, скажем, возьму имя в качестве второго параметра в консоли и распечатаю его вместе с приветствием:

Код: Выделить всё

import sys
print "hello,", sys.argv[1]
Вывод:

Код: Выделить всё

c:\>helloscript brian
Traceback (most recent call last):
File "C:\Scripts\helloscript.py", line 2, in 
print sys.argv[1]
IndexError: list index out of range

Код: Выделить всё

sys.argv
выглядит так:

Код: Выделить всё

['C:\\Scripts\\helloscript.py']


Если я вызываю сценарий явно, как обычно:

Код: Выделить всё

C:\>python C:\Scripts\helloscript.py brian
Вывод:

Код: Выделить всё

hello, brian
Если я попытаюсь использовать optparse, результат будет аналогичным, хотя я могу избежать ошибки:

Код: Выделить всё

from optparse import OptionParser

parser = OptionParser()
parser.add_option("-f", "--firstname", action="store", type="string", dest="firstname")
(options, args) = parser.parse_args()
print "hello,", options.firstname
Вывод:

Код: Выделить всё

hello, None
Опять же, сценарий работает нормально, если я вызываю его явно.



Вот в чем вопрос. Что происходит? Почему при неявном вызове моего сценария в sys.argv не заполняется больше, чем просто имя сценария?

Подробнее здесь: https://stackoverflow.com/questions/152 ... on-windows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»