如何从Python函数中检索调用脚本的结果?

时间:2010-07-21 17:46:50

标签: python function

我想从函数中调用外部脚本,例如:

import subprocess

def call_script(script):
   subprocess.call(script)
   return answer #retrieving the result is the part I'm struggling with

call_script("/user/bin/calc_delta.py")

脚本calc_delta.py只在完成后打印结果。如何将该脚本的结果分配给变量?谢谢。

3 个答案:

答案 0 :(得分:4)

您应该使用subprocess.call并在其上调用Popen,而不是使用communicate

这样您就可以阅读stdoutstderr了。您还可以使用stdin输入数据。

文档http://docs.python.org/library/subprocess.html#replacing-bin-sh-shell-backquote中的示例:

output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0]

答案 1 :(得分:3)

在Python≥2.7/≥3.1中,您可以使用subprocess.check_output将标准输出转换为str。

answer = subprocess.check_output(['/usr/bin/calc_delta.py'])

如果您需要的是shell命令,那么Python上也有subprocess.getstatusoutputsubprocess.getoutput≥3.1,但仅在* NIX上支持。

答案 2 :(得分:2)

您应该查看subprocess.Popen(popen

例如(来自文档):

pipe = Popen("cmd", shell=True, bufsize=bufsize, stdout=PIPE).stdout

subprocess.call只会为您提供呼叫的响应代码,而不是输出。