2016-10-04 36 views
-2

在我转到文件我使用exec来运行外部脚本:去EXEC外部python脚本,并获得返回的输出

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

它执行罚款的python脚本,但去fmt.Println(string(out))打印什么。

问题是我应该如何从Python脚本中返回值以便从Go再次读回?

Python的伪代码:

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

+0

的Python脚本应写为'stdout'。你可以'打印'或'sys.stdout.write'。 – tdelaney

+0

显示test.py的代码。 –

+0

谢谢@tdelaney! – alejosocorro

回答

-1

我想我找到的bug,你需要把完整路径 “test.py”

测试

我有测试目录中的两个文件: test.py test.go

test.py是:

#!/usr/bin/env python3 

print("Hello from python") 

test.go是:

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

而且我得到以下输出:

$ go run ./test.go 
Hello from python 
相关问题