如何从python脚本中的shell脚本返回一个值

我有一个python脚本,它需要一个shell脚本的值。

以下是shell脚本(a.sh):

#!/bin/bash return_value(){ value=$(///some unix command) echo "$value" } return_value 

以下是python脚本:

 Import subprocess answer = Subprocess.call(['./a.sh']) print("the answer is %s % answer") 

但它不工作。错误是“ImportError:没有名为子stream程的模块”。 我想我的版本(Python 2.3.4)是相当古老的。 在这种情况下是否有可以替代的子过程?

Solutions Collecting From Web of "如何从python脚本中的shell脚本返回一个值"

使用subprocess.check_output

 import subprocess answer = subprocess.check_output(['./a.sh']) print("the answer is {}".format(answer)) 

帮助subprocess.check_output

 >>> print subprocess.check_output.__doc__ Run command with arguments and return its output as a byte string. 

演示:

 >>> import subprocess >>> answer = subprocess.check_output(['./a.sh']) >>> answer 'Hello World!\n' >>> print("the answer is {}".format(answer)) the answer is Hello World! 

a.sh

 #!/bin/bash STR="Hello World!" echo $STR 

使用Subprocess.check_output而不是Subprocess.call

Subprocess.call返回该脚本的返回码。
Subprocess.check_output返回脚本输出的字节流。

python 3.3 doc站点上的Subprocess.check_output