dongzhi1822 2016-10-04 00:00
浏览 1025

执行exec外部python脚本并获取返回的输出

In my Go file i use exec to run the external script:

cmd := exec.Command("test.py")
out, err := cmd.CombinedOutput()
if err != nil {
    fmt.Println(err)
}
fmt.Println(string(out))

The python script it's executed fine, but the go fmt.Println(string(out)) prints nothing.

The question it's how i should return the value from the Python script to be read back again from Go?

Python pseudo code:

def main(): ... ... return value

  • 写回答

1条回答 默认 最新

  • duanjiancong4860 2016-10-04 00:24
    关注

    I think i found the bug, you need to put the full path to "test.py"

    Test

    I have two files in a directory: test.py test.go

    The test.py is:

    #!/usr/bin/env python3
    
    print("Hello from python")
    

    and test.go is:

    package main
    
    import (
            "fmt"
            "os/exec"
    )
    
    func main() {
    
    //cmd := exec.Command("test.py")
    // I got an error because test.py was not in my PATH, which makes sense
    // When i added './' the program worked because go knew where to find test.py
    cmd := exec.Command("./test.py")
    out, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(string(out))
    }
    

    And I get the following output:

    $ go run ./test.go 
    Hello from python
    
    评论

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R