Как передать переменные аргументы командной строки для сценария Python, который запускается из командного файла? - PullRequest
2 голосов
/ 01 апреля 2019

Я хочу запустить свой скрипт на python из командного файла. Требуется четыре аргумента, которые обрабатываются в скрипте через sys.argv [n]. Эти аргументы являются путями, которые варьируются от вызова программы к вызову программы. Итак, как мне создать командный файл, где вы можете передавать новые аргументы для вызова программы каждый раз, когда вы запускаете код? Я изучил Python всего один семестр и застрял с этой проблемой.

Изначально я создал пакетный файл, чтобы проверить, пытается ли код даже выполняться. Конечно, это вызвало ошибку из-за отсутствия аргументов. Затем я попытался передать аргументы через пакетный файл, который не сработал и выдал мне ошибку, как и раньше «список индексов вне диапазона»:

set 1= path1
set 2= path2
set 3= path3
set 4= path4
"C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe" "C:\repo\PythonProgramme.py" %1 %2 %3 %4
pause

Я ожидал выполнения кода, но, как уже было сказано, агенты не были переданы. Может кто-нибудь помочь мне решить эту проблему и, возможно, дать подсказку, что использовать для различных аргументов (путей)?

Ответы [ 2 ]

3 голосов
/ 01 апреля 2019

Вам нужно окружить имя вашей переменной %, чтобы оно работало. Вы должны прочитать документацию для set и, возможно, также эту статью о пакетных переменных.

Тем временем должно работать следующее.

set var1=path1
set var2=path2
set var3=path3
set var4=path4
"C:\[...]\python.exe" "C:\repo\PythonProgramme.py" %var1% %var2% %var3% %var4%
pause
1 голос
/ 01 апреля 2019

Ошибка, которую вы получаете из вашего (неизвестного) кода Python.

  • Хотя необычно, вы можете установить имена переменных только с цифрами
  • НО для ссылкиэти переменные вам нужно заключить их в знаки процента с обеих сторон %1%
  • С помощью %1..%4 вы ссылаетесь на аргументы командной строки, переданные в сам пакет,
    если ничего не было передано, аргументы отсутствуютдля обработки Python
  • пробелы вокруг знака равенства в наборе становятся частью имени / содержимого переменной.

В то время как имена переменных, начинающиеся с буквы, предпочтительнее (как Жак Гаудин предлагает +1), вы можете попробовать:

"C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe" ^
    "C:\repo\PythonProgramme.py" %1% %2% %3% %4%

или, если набор Path'es может содержать пробелы:

"C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe" ^
    "C:\repo\PythonProgramme.py" "%1%" "%2%" "%3%" "%4%"
...