Когда вы выполняете сценарий без ввода «python» перед ним, вам необходимо знать две вещи о том, как Windows вызывает программу. Во-первых, нужно выяснить, что это за файл, по мнению Windows:
C: \> ассоциированный .py
.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