Go:运行外部Python脚本

Cla*_*u S 2 exec go

我试过跟随Go Docs来调用一个只从GO输出"Hello"的python脚本,但直到现在才失败.

exec.Command("script.py")
Run Code Online (Sandbox Code Playgroud)

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

exec.Command("job.sh")
Run Code Online (Sandbox Code Playgroud)

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

编辑

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

Von*_*onC 5

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

exec.Command("script.py").Run()
exec.Command("job.sh").Run()
Run Code Online (Sandbox Code Playgroud)

您可以在" 如何在Golang中执行简单的Windows DOS命令? "中看到它(对于Windows,但同样的想法适用于Unix)

c := exec.Command("job.sh")

if err := c.Run(); err != nil { 
    fmt.Println("Error: ", err)
}   
Run Code Online (Sandbox Code Playgroud)

或者,Output()如" 在Go中执行shell命令 "中所示:

cmd := exec.Command("job.sh")
out, err := cmd.Output()

if err != nil {
    println(err.Error())
    return
}

fmt.Println(string(out))
Run Code Online (Sandbox Code Playgroud)


Sal*_*ali 5

首先,请不要忘记使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())
}
Run Code Online (Sandbox Code Playgroud)