我试图弄清楚如何从shell脚本调用Python函数。
我有一个包含多个函数的Python文件,我需要在shell脚本中使用它们返回的值。有没有办法做到这一点。
我这样做是为了使用Python读取配置文件并获取shell中的值。还有其他更好的方法来实现这一目标。
test.py
包含:
import ConfigParser
config = ConfigParser.ConfigParser()
config.read("test.conf")
def get_foo():
return config.get("locations", "foo")
def get_bar():
return config.get("locations", "bar")
我需要将Python函数返回的值存储在shell变量中。
答案 0 :(得分:26)
您可以通过要求Python解释器打印结果,将函数的结果发送到标准输出:
python -c 'import test; print test.get_foo()'
-c
选项只是要求Python执行一些Python命令。
为了将结果存储在变量中,您可以这样做:
RESULT_FOO=`python -c 'import test; print test.get_foo()'`
或等同于
RESULT=$(python -c 'import test; print test.get_foo()')
因为反引号和$(…)
评估命令并将其替换为输出。
PS :获取每个函数的结果需要每次都使用此方法解析配置文件。这可以通过一次性返回所有结果来优化,例如:
ALL_RESULTS=$(python -c 'import test; print test.get_foo(), test.get_bar()')
然后可以将结果拆分并与
放在不同的变量中RESULT_BAR=$(echo $ALL_RESULTS | cut -d' ' -f2)
获取第二个结果并将其放在RESULT_BAR
中(类似地:-fn
用于结果#n)。
PPS :正如Pablo Maurin所说,如果可能的话,在单个解释器(Python,但也可能是shell)中执行所有操作可能会更容易,而不是在一个程序中计算变量在另一个中使用它们。