我尝试按照Go Docs来调用一个只从GO输出“Hello”的python脚本,但直到现在才失败。
exec.Command("script.py")
或者我也试过调用一个只调用python脚本的shell脚本,但也失败了:
exec.Command("job.sh")
任何想法我将如何实现这一目标?
修改
我按照评论中的建议解决了问题并添加了exec.Command()的完整路径。
答案 0 :(得分:5)
exec.Command("script.py").Run()
exec.Command("job.sh").Run()
您可以在“How to execute a simple Windows DOS command in Golang?”中看到它(对于Windows,但同样的想法适用于Unix)
c := exec.Command("job.sh")
if err := c.Run(); err != nil {
fmt.Println("Error: ", err)
}
或者,使用Output()
作为“Exec a shell command in Go”:
cmd := exec.Command("job.sh")
out, err := cmd.Output()
if err != nil {
println(err.Error())
return
}
fmt.Println(string(out))
答案 1 :(得分:4)
首先不要忘记让你的python脚本可执行(权限和#!/usr/local/bin/python
在开头)。
在此之后你可以运行类似的东西(注意它会报告错误和标准输出)。
package main
import (
"log"
"os"
"os/exec"
)
func main() {
cmd := exec.Command("script.py")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
log.Println(cmd.Run())
}
答案 2 :(得分:1)
以下在Windows 10上为我工作过
python := path.Clean(strings.Join([]string{os.Getenv("userprofile"), "Anaconda3", "python.exe"}, "/"))
script := "my_script.py"
cmd := exec.Command("cmd", python, script)
out, err := cmd.Output()
fmt.Println(string(out))
if err != nil {
log.Fatal(err)
}
答案 3 :(得分:0)
有一个演示告诉我们如何: