Windows не передает параметры командной строки программам Python, выполненным от оболочки

Я испытываю затруднения при получении параметров командной строки, переданных программам Python, если я пытаюсь выполнить их непосредственно, как исполняемый файл управляет от командного процессора Windows. Например, если у меня есть эта программа (test.py):

import sys
print "Args: %r" % sys.argv[1:]

И выполнитесь:

>test foo
Args: []

по сравнению с:

>python test.py foo
Args: ['foo']

Моя конфигурация имеет:

PATH=...;C:\python25;...
PATHEXT=...;.PY;....

>assoc .py
.py=Python.File

>ftype | grep Python
Python.CompiledFile="C:\Python25\python.exe" "%1" %*
Python.File="C:\Python25\python.exe" "%1" %*
Python.NoConFile="C:\Python25\pythonw.exe" "%1" %*
83
задан denfromufa 31 March 2015 в 04:59
поделиться

2 ответа

Думаю, я решил эту проблему. По какой-то причине в реестре есть ВТОРОЕ место (помимо того, что показано ассоциациями файлов, хранящимися в HKEY_CLASSES_ROOT \ Python.File \ shell \ open \ command):

[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command]
@="\"C:\\Python25\\python.exe\" \"%1\" %*"

Похоже, это управляющий параметр в моей системе. Приведенный выше параметр реестра добавляет "% *" для передачи всех аргументов в python.exe (по какой-то причине он отсутствовал в моем реестре).

99
ответ дан 24 November 2019 в 08:54
поделиться

Интересно. Здесь работает с использованием Python 2.6 и Windows XP (5.1.2600):

C:\Documents and Settings\hbrown>python test.py foo
['test.py', 'foo']

C:\Documents and Settings\hbrown>test.py foo
['C:\\Documents and Settings\\hbrown\\test.py', 'foo']

C:\Documents and Settings\hbrown>test foo
['C:\\Documents and Settings\\hbrown\\test.py', 'foo']

C:\Documents and Settings\hbrown>type test.py
import sys
print sys.argv 

C:\Documents and Settings\hbrown>echo %PATHEXT%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PY 

C:\Documents and Settings\hbrown>assoc .py
.py=Python.File
0
ответ дан 24 November 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: