Python子进程:使用字符串变量作为命令

时间:2014-06-04 14:30:18

标签: python subprocess

我想根据python脚本的输入汇编命令,但是我遇到了subprocess.check_output识别字符串的问题。这是一个例子。

 str1 = "./program.sh %lf %lf" % (x0, x1)
 sim_flux230 = subprocess.check_output(str1)

它一直说str1中没有这样的文件或目录。如何让子进程识别字符串str正在保持而不是逐字检查名为str1的文件?

2 个答案:

答案 0 :(得分:2)

尝试使用shlex并查看是否有帮助:

import shlex

str1 = "./program.sh %lf %lf" % (x0, x1)
sim_flux230 = subprocess.check_output(shlex.split(str1))

一般来说,如果您没有shell=True(即subprocess.check_output(str1, shell=True)),那么该命令需要作为列表传递。它也是not safe to use shell=True

答案 1 :(得分:1)

subprocessshell=False一起使用时,必须将参数作为列表传递。您只能使用shell=True将它们作为字符串传递。如果你这样做,你的代码应该可以工作:

cmd = ["./program.sh", x0, x1]
sim_flux230 = subprocess.check_output(cmd)