我想根据python脚本的输入汇编命令,但是我遇到了subprocess.check_output识别字符串的问题。这是一个例子。
str1 = "./program.sh %lf %lf" % (x0, x1)
sim_flux230 = subprocess.check_output(str1)
它一直说str1中没有这样的文件或目录。如何让子进程识别字符串str正在保持而不是逐字检查名为str1的文件?
答案 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)
将subprocess
与shell=False
一起使用时,必须将参数作为列表传递。您只能使用shell=True
将它们作为字符串传递。如果你这样做,你的代码应该可以工作:
cmd = ["./program.sh", x0, x1]
sim_flux230 = subprocess.check_output(cmd)