尝试使用exec.Command在Golang中执行Python代码。

huangapple go评论74阅读模式
英文:

Trying to exec python in golang using exec.Command(

问题

func execPython(fPath, colName, srv string) (){
fmt.Println("在execPython函数内")
cmd := "python rfsvmchurn.py"
arg0 := "-fp " + fPath
arg1 := "-srv " + srv
arg2 := "-col " + colName
if err := exec.Command(cmd, arg0, arg1, arg2).Run(); err != nil {
fmt.Println("Python执行错误:", err)
}
}

出现错误
Python执行错误: exec: "python rfsvmchurn.py": 在$PATH中找不到可执行文件

英文:
func execPython(fPath, colName, srv  string) (){
fmt.Println("Inside execPython")
cmd:= "python rfsvmchurn.py"
arg0 := "-fp " + fPath
arg1 := "-srv " + srv
arg2 := "-col " + colName
if err := exec.Command(cmd, arg0, arg1, arg2).Run(); err != nil {
    fmt.Println("Python Execution Error :",err)
}

}

getting error
Python Execution Error : exec: "python rfsvmchurn.py": executable file not found in $PATH

答案1

得分: 1

你的问题可能是你将标志和它们的参数作为一个字符串传递。你应该这样做:

func execPython(fPath, colName, srv string) {
    fmt.Println("Inside execPython")
    arg0 := "-fp " + fPath
    arg1 := "-srv " + srv
    arg2 := "-col " + colName
    cmd := exec.Command("python", "rfsvmchurn.py", "-fp", fPath, "-srv", srv, "-col", colName)
    if err := cmd.Run(); err != nil {
        fmt.Println("Python Execution Error:", err)
    }
}

请注意,我已经将代码翻译成了中文。

英文:

Your issue is probably that you're passing flags and their arguments as a single string. You should instead do:

func execPython(fPath, colName, srv  string) (){
    fmt.Println("Inside execPython")
    arg0 := "-fp " + fPath
    arg1 := "-srv " + srv
    arg2 := "-col " + colName
    cmd := exec.Command("python", "rfsvmchurn.py", "-fp", fPath, "-srv", srv, "-col", colName)
    if err := cmd.Run(); err != nil {
        fmt.Println("Python Execution Error :",err)
    }
}

huangapple
  • 本文由 发表于 2016年1月27日 09:59:15
  • 转载请务必保留本文链接:https://go.coder-hub.com/35027519.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定