使用Python中的Popen执行变量

时间:2016-04-11 23:21:23

标签: python popen

我有一个python脚本正在调用名为testrunner.bat的bat脚本,该脚本又在SOAPUI中执行TestSuite。我实际上通过以下命令使外部调用正常工作:

Popen("testrunner.bat -s\"CCT000 - Deploy Software Release\" -R\"TestSuite Report\" -E\"Default environment\" -Ppath.packages.sq=Y:\\NIGHTLY C:\\CI\\HEDeployment\\CI-XXX-DeploySwRelease")

但是,我需要能够使用该软件" level"是动态的,需要将变量级别传递给命令来代替" NIGHTLY"所以我可以指定它是夜间软件,还是稳定等等。我已经看到我应该单独打破所有论点,但是我很难过。

1 个答案:

答案 0 :(得分:2)

subprocess.Popen()可以获取参数列表以及字符串。所以,这应该适合你:

release_type = "NIGHTLY"
Popen(['testrunner.bat', 
       '-s"CCT000 - Deploy Software Release"', 
       '-R"TestSuite Report"', 
       '-E"Default environment"', 
       '-Ppath.packages.sq=Y:' + release_type, 
       'C:CIHEDeploymentCI-XXX-DeploySwRelease'])

正如文档中所提到的,shlex.split对于将原始命令字符串拆分成碎片非常有用。但是,至少在我的情况下,我不得不重新添加双引号。

另外,请记住单引号字符串可以包含双引号,反之亦然,因此您无需在此处转义引号。