Я пытаюсь использовать Popen для запуска Java-программы, которая принимает несколько аргументов, последний из них представляет собой шаблон xml.Python Popen input from variable?
То, что я до сих пор пытается передать значение шаблона через communication(), но, похоже, не работает.
command = [
'java',
'-jar',
'~/jenkins-cli.jar',
'-noKeyAuth',
'-s',
'docker-host',
'create-job',
(self.project.project_name+'-'+env)
]
subprocess.Popen(command,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
).communicate(input=template.render(template_vars))
Я знаю, за то, что значение template.render (template_vars) является правильным, я могу использовать выход из этого вызова функции в командной строке, и она работает отлично, проблема только при прохождении значение для процесса.
Если я запускаю из командной строки следующее, все работает.
java -jar ~/jenkins-cli.jar -noKeyAuth -s jenkins-host create-job test-dev < template.xml
Есть ли лучший способ отправить вывод template.render (template_vars) в качестве входных данных для процесса?
«последний из них - это шаблон xml», похоже, не правда; похоже, что этот XML-шаблон является stdin программы Java, а не аргументом командной строки. – abarnert