从python调用bash脚本并返回变量

时间:2015-09-14 18:57:29

标签: python bash subprocess

我正在尝试在Python中运行以下代码,该代码调用Bash脚本文件并将其输出保存到变量中。我正在尝试使用subprocess.check_output,但它会引发错误,因为#34;没有这样的文件或目录"。 subprocess.call也不起作用。这是我的一些代码。

answer = subprocess.check_output(['/directory/bashfile.bash -c /directory/file -i input -o output'])
print answer

-c -i-o只是脚本bashfile的参数。

1 个答案:

答案 0 :(得分:2)

问题是你传递整个命令字符串而不是将它们分成args。您需要将其作为shell命令传递:

answer = subprocess.check_output('/directory/bashfile.bash -c /directory/file -i input -o output', 
                                 shell=True)
print answer

或者您需要自己对其进行标记:

answer = subprocess.check_output(['/directory/bashfile.bash', 
                                  '-c', '/directory/file',
                                  '-i', 'input',
                                  '-o', 'output'])
print answer

有关子进程的更多信息,请参阅the docs(python 3版本here)!具体来说,您需要阅读有关"Frequently used arguments"

的部分