У меня есть сценарий, который вызывает другой скрипт python подпроцессом. Модуль Popen. Но так как у меня есть аргументы, хранящиеся в переменной (ы)Передача переменных в Subprocess.Popen
servers[server]['address']
servers[server]['port']
servers[server]['pass']
Я не могу выполнить команду
p = subprocess.Popen(["python mytool.py -a ", servers[server]['address'], "-x", servers[server]['port'], "-p", servers[server]['pass'], "some additional command"], shell=True, stdout=subprocess.PIPE)
Обход:
Я получил его на работу, расчесывая @wilberforce & @ ответ ciphor но небольшая модификация
command = "python mytool.py -a %s -x %s -p %s some additional command" % (servers[server]['address'], servers[server]['port'], servers[server]['pass'])
p = subprocess.Popen(command , shell=True, stdout=subprocess.PIPE)
Он перестает работать, если я добавил несколько переменных в двойные кавычки, он может принимать значения с максимальными «2» переменными и ломаться. Я добавил больше.
Спасибо всем, кто ответил!
Используйте переменные для построения строки, которая является командой, или передайте их в виде списка аргументов. – beroe