我正在尝试在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
的参数。
答案 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"
的部分