我正在编写一个python程序,它在子进程中运行一些BASH脚本。有人可能会说,我正在使用BASH作为我的python程序的脚本语言。
有没有一种方法可以将python函数注入到bash脚本中,而不必从bash重新加载python代码?
strawman示例:如果这是运行Javascript的Python,那么我可以将我的js2py函数绑定到VM中,并从javascript中调用它们。
我想从bash调用:python some_file_of_mine.py,但这将启动一个新的python进程,而不需要访问python程序的数据。
还想打个电话:python -c $SOME_INJECTED_PYTHON_CODE。这可以使用python的inspect.source()预注入一些简单的python代码以及来自父进程的一些绑定数据到子bash中。然而,这将是非常敏感的(‘/“)引用,并将导致一些问题的$import。
我真正想要的是一种简单的方法,可以将父进程称为bash子进程,并获得一些数据(除了使用烧瓶+卷发组合)。
发布于 2021-07-12 06:58:14
通过要求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()')因为backticks和$(…)计算了一个命令并将其替换为它的输出。
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)。
PS2:如果可能的话,在单个解释器(Python,但也可能是shell)中完成所有事情可能更容易,而不是在一个程序中计算变量,然后在另一个程序中使用它们。
https://stackoverflow.com/questions/68342921
复制相似问题