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