我想用Popen来运行一个需要几个参数的java程序,最后一个是xml模板。来自变量的Python Popen输入?
我到目前为止试图通过沟通()传递模板的价值,但似乎并不奏效。
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模板是Java程序的stdin,而不是命令行参数。 – abarnert 2014-12-02 22:46:37