Передача аргументов скрипту Python из командного файла - PullRequest
1 голос
/ 08 марта 2019

Я хочу передать аргументы от 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" %*

1 Ответ

0 голосов
/ 08 марта 2019

Вы WILL должны иметь .py в конце имени файла, чтобы это работало.Ваш файл test.bat должен выглядеть следующим образом:

python myscript.py [arg1] [arg2]

Если файл myscript.py находится не в том же каталоге, укажите путь к myscript.py ENDING IN myscript.py.

...