Коли ви виконуєте сценарій, не вводячи "python" спереду, вам потрібно знати дві речі про те, як Windows викликає програму. По-перше, з’ясувати, який файл Windows вважає таким файлом:
C: \> доц. Пи
.py = Python.File
Далі вам потрібно знати, як Windows виконує речі з цим розширенням. Це пов'язано з типом файлу "Python.File", тому ця команда показує, що він буде робити:
C: \> ftype Python.File
Python.File = "c: \ python26 \ python.exe" "% 1"% *
Отже, на моїй машині, коли я набираю "blah.py foo", він буде виконувати саме цю команду, без різниці в результатах, ніж якщо б я набрав повну інформацію сам:
"c: \ python26 \ python.exe" "blah.py" foo
Якщо ви вводите одне і те ж, включаючи лапки, то ви отримаєте результати, ідентичні тим, коли ви просто введете "blah.py foo". Тепер ви в змозі самостійно розібратися в решті своєї проблеми.
(Або опублікуйте у своєму запитанні більше корисної інформації, як-от фактичні копії того, що ви бачите на консолі. Зверніть увагу, що люди, які займаються подібними справами, отримують голоси за свої запитання, вони отримують бали репутації та більше людей швидше за все допоможуть їм добрими відповідями.)
Залучено з коментарів:
Навіть якщо assoc і ftype відображають правильну інформацію, може трапитися так, що аргументи видаляються. У цьому випадку може допомогти безпосереднє виправлення відповідних ключів реєстру для Python. Встановіть
HKEY_CLASSES_ROOT\Applications\python26.exe\shell\open\command
ключ до:
"C:\Python26\python26.exe" "%1" %*
Ймовірно, раніше він %*
був відсутній. Аналогічно, встановити
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
до того ж значення. Див. Http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/
HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
Шлях реєстру може змінюватися, використовувати python26.exe
або python.exe
чи в залежності від того , вже в реєстрі.
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command