为了账号安全,请及时绑定邮箱和手机立即绑定

从 Go 调用 Python 函数并获取函数返回值

从 Go 调用 Python 函数并获取函数返回值

Go
慕容3067478 2021-06-29 09:31:17
我正在编写一个Go程序。在这个 Go 程序中,我想调用另一个文件中定义的 Python 函数并接收该函数的返回值,以便我可以在 Go 程序的后续处理中使用它。但是,我无法在 Go 程序中获取任何返回的数据。以下是我认为可行但显然不可行的最小示例:gofile.gopackage mainimport "os/exec"import "fmt"func main() {     fmt.Println("here we go...")     program := "python"     arg0 := "-c"     arg1 := fmt.Sprintf("'import pythonfile; print pythonfile.cat_strings(\"%s\", \"%s\")'", "foo", "bar")     cmd := exec.Command(program, arg0, arg1)     fmt.Println("command args:", cmd.Args)     out, err := cmd.CombinedOutput()     if err != nil {         fmt.Println("Concatenation failed with error:", err.Error())     return     }     fmt.Println("concatentation length: ", len(out))     fmt.Println("concatenation: ", string(out))     fmt.Println("...done")}蟒蛇文件.pydef cat_strings(a, b):    return a + b如果我打电话,go run gofile我会得到以下输出:here we go...command args: [python -c 'import pythonfile; print pythonfile.cat_strings("foo", "bar")']concatentation length:  0concatenation:  ...done一些注意事项:我-c在 Python 调用中使用了该标志,因此我可以cat_strings直接调用该函数。假设cat_strings是 Python 文件的一部分,其中包含其他 Python 程序使用的实用函数,因此我没有任何if __name__ == __main__业务。我不想将 Python 文件修改为print a + b(而不是return a + b);请参阅关于该函数是一组实用程序函数的一部分的先前观点,这些函数应该可以被其他 Python 代码调用。该cat_strings函数是虚构的,用于演示目的;真正的功能是我不想简单地在 Go 中重新实现的东西。我真的对如何从 Go 调用 Python 函数并获取返回值感兴趣。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 503 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信