Go:运行外部Python脚本

时间:2014-11-19 16:09:28

标签: go exec

我尝试按照Go Docs来调用一个只从GO输出“Hello”的python脚本,但直到现在才失败。

exec.Command("script.py")

或者我也试过调用一个只调用python脚本的shell脚本,但也失败了:

exec.Command("job.sh")

任何想法我将如何实现这一目标?

修改

我按照评论中的建议解决了问题并添加了exec.Command()的完整路径。

4 个答案:

答案 0 :(得分:5)

您是否尝试添加Run()Output(),如:

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)

有一个演示告诉我们如何:

  1. 如何在 Golang 中调用 python 脚本?
  2. 如何在 Golang 中调用 python 发行版?

https://github.com/denghejun/python-in-go