gpt4 book ai didi

go - 在 Go 中运行 Python 命令

转载 作者:数据小太阳 更新时间:2023-10-29 03:44:21 24 4
gpt4 key购买 nike

我正在尝试以下代码:

package main
import ("fmt"; "log"; "os/exec")
func main() {
cmd := exec.Command("/usr/bin/python3.5", "-c",
"import easygui as eg; print('Hello world'); eg.msgbox(msg='Hi there'); print('from Golang')")
out, err := cmd.CombinedOutput()
if err != nil { log.Fatal(err) }
fmt.Printf(string(out)) }

我尝试先在终端上打印,然后显示一个 gui 消息框,然后再次在终端上打印。

但是,它首先显示一个消息框,然后执行两个打印语句。

如何解决?

最佳答案

您的程序运行 cmd.CombinedOutput(),它会启动 Python 脚本(作为显示消息框的副作用)并将其标准输出收集到一个变量中;然后执行单个 fmt.Printf 来打印程序的输出。这导致了您所看到的排序。

如果您调用 cmd.StdoutPipe(),那么您将获得一个包含脚本标准输出的 io.Reader。您有责任从管道中读取并复制到您自己进程的标准输出; os/exec documentation has an example .您需要 cmd.Start(),然后从管道读取所有内容,然后 cmd.Wait() 自行清理。

您也可以直接分配 cmd.Stdout = os.Stdout,然后是 cmd.Run()。在这种情况下,您将无法在程序中看到输出,但您也不必到处复制它。

关于go - 在 Go 中运行 Python 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51188919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com