Main.go
func main() {
bytearray=getbytearray()//getting an array of bytes
cmd := exec.Command("python3", "abc.py")
in:=cmd.Stdin
cmd.Run()
}
我想将字节数组作为python脚本
的输入发送abc.py
import sys
newFile.write(sys.stdin) //write the byte array got as input to the newfile
如何从golang向python发送字节并将其保存到文件中?
答案 0 :(得分:1)
您可以通过exec.Command
上的Cmd.StdinPipe来访问流程'stdin。这会为您提供一个WriteCloser,当进程终止时会自动关闭。
stdin的写入必须在cmd.Run
调用的单独goroutine中完成。
这是一个写“你好!”的简单例子。 (作为字节数组)到stdin。
package main
import (
"fmt"
"os/exec"
)
func main() {
byteArray := []byte("hi there!")
cmd := exec.Command("python3", "abc.py")
stdin, err := cmd.StdinPipe()
if err != nil {
panic(err)
}
go func() {
defer stdin.Close()
if _, err := stdin.Write(byteArray); err != nil {
panic(err)
}
}()
fmt.Println("Exec status: ", cmd.Run())
}
你还想在python中实际读取stdin:
import sys
f = open('output', 'w')
f.write(sys.stdin.read())