从Shell脚本调用Python函数

问题描述

您可以通过要求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()')

自反引号起,并$(…)评估命令并用其输出替换它。

:要获取每个功能的结果,都需要使用这种方法每次都解析配置文件。可以通过一次返回所有结果来优化此过程,例如:

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)。

:正如Pablo Maurin提到的那样,如果可能的话,在一个解释器(Python,但也可能在Shell)中完成所有操作可能会更容易,而不是在一个程序中计算变量并在另一个程序中使用它们。

解决方法

我试图弄清楚如何从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变量中。

相关文章

猜你在找的编程问答相关文章

在Pandas数据框中旋转数据表
如何获得浮点序列中的下一个值?
获取Instagram粉丝
在批处理结束时检测到不可提交的事务。交易回滚
将一个文本文件文件夹与一个单元格中的每个内容合并为一个CSV文件
在使用JSON数据时,如何防止我的应用程序意外崩溃,“关闭”,而代之以处理异常?
JDBC批处理INSERT,返回ID
具有多个表的复杂INNER JOIN查询的回显结果