在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
目标:将go中一个二维数组传到pythone中处理并返回。难点在于数据格式的转换。 go代码如下: package main import ( "os/exec" "syscall" "github.com/astaxie/beego" "encoding/json" ) func main() { a := [][]float64{ {1,2}, {3,4}, } json_a,_:=json.Marshal(a) string_a:=string(json_a) cmd := exec.Command("python", "test.py",string_a) cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true} var ret [][]float64 out, _ := cmd.Output() err := json.Unmarshal(out, &ret) beego.Debug(err) beego.Debug(ret) } test.python文件如下: import json def setParam(argv): param={} param["a"] = json.loads(argv[1]) return param if __name__ == '__main__': param = setParam(sys.argv) a = param["a"] print(a) 可以看到python中处理的结果是将我们go中传来的二维数组原封不动返回回去。 数据传输过程如下: 1.在go中,先将二维数组用 json.Marshal 编码为json,并以字符串形式传到python中,传的时候使用命令行cmd。 2.在python中,使用 json.loads 将接收到的数据解码。并输出。(python输出的格式会自动转为json格式) 3.数据传回go中,在go中使用 json.Unmarshal 解码得到传回的数据。 |
请发表评论