Я хочу передать аргументы от test.bat
до myscript.py
.
test.bat
../path/to/file/myscript.py "myarg1" "myarg2"
myscript.py
:
#!/usr/bin/env python2
import sys
if __name__ == '__main__':
print sys.version()
myarg1= sys.argv[1]
myarg2= sys.argv[2]
Я использую windows 10 и настроил pylauncher в качестве программы по умолчанию для запуска файлов python. У меня есть пользовательские и системные переменные PATH
в Python 2.7 и 3.6. Шебанг позаботился, и переводчик py2.7 выбран, как и ожидалось.
Ошибка, с которой я сталкиваюсь, состоит в том, что аргументы не передаются. Журнал ошибок читается как показано ниже:
2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:22:17) [MSC v.1500 32 bit (Intel)]
Traceback (most recent call last):
File "C:\full\path\to\file\myscript.py", line 12, in <module>
myarg1= sys.argv[1]
IndexError: list index out of range
Одно из решений:
Когда я указываю py
в моем .bat-файле, он работает и аргументы читаются правильно
py ../path/to/file/myscript.py "myarg1" "myarg2"
Как я могу заставить эту работу работать без добавления py
в мой скрипт .bat?
Больше информации - запуск этих команд в cmd
shell:
assoc .py
т .py=Python.File
ftype Python.File
т Python.File="C:\WINDOWS\py.exe" "%L" %*