我想用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