Запускать скрипты Python из командной строки Windows, аргумент не передан - PullRequest
15 голосов
/ 22 октября 2011

У меня есть куча скриптов, написанных на Python. Я запускаю их из командной строки Windows, как

c:> my_script.py arg1 arg2 arg3

Это работает на каждом компьютере и в каждой версии Windows много лет назад. Только сейчас это сломалось в моей системе Windows 7. Скрипт загружен и выполнен. Но ни один из аргументов не передается в сценарий.

Чтобы проиллюстрировать это, у меня есть скрипт с именем py_echo.py:

from pprint import pprint as pp
import sys

if __name__ =='__main__':
    pp(sys.argv)

Затем я выполняю его с аргументом a, b, c. Ни один из них не пройден.

c:\Python27\Lib\site-packages>py_echo.py a b c
['C:\\0\\usr\\bin\\py_echo.py']

Если я запускаю python.exe явно, аргументы передаются правильно

c:\Python27\Lib\site-packages>python.exe c:\0\usr\bin\py_echo.py a b c
['c:\\0\\usr\\bin\\py_echo.py', 'a', 'b', 'c']

Это работало раньше. Это только начинает выходить из строя после того, как я удалил кучу старой версии интерпретатора Python и модулей с моего компьютера. Переустановка Python не помогает. Интересно, что я могу сделать, чтобы это исправить ??

Я стал очень зависимым от моих сценариев, которые я создал за эти годы. Я чувствую себя очень инвалидом, когда они ломаются: (

Ответы [ 2 ]

10 голосов
/ 16 ноября 2012

У меня была такая же проблема с Windows 7 / Python, и в конце концов я обнаружил, что мне нужно было установить правильные ассоциации файлов И обновить две записи реестра через regedit.

Все это описано в этой замечательной статье:

http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/

4 голосов
/ 01 октября 2015

Чтобы переместить ответ в SO (вместо ссылки в ответ Джона ):

Изменение следующих двух реестров, чтобы аргументы передавались в Python:

HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command

Добавьте %* к существующему "C:\PythonXX\python.exe" "%1", чтобы ключ теперь выглядел следующим образом: "C:\PythonXX\python.exe" "%1" %*.

Источник: http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/

...