连接Golang管道和Python 2.7
我有以下任务:需要用Python连接Go管道。我了解如何在Go下运行pythonic流程:连接Golang管道和Python 2.7,python,go,Python,Go,我有以下任务:需要用Python连接Go管道。我了解如何在Go下运行pythonic流程: var compiler string = "python" var path string = "...here script path" pyExec := exec.Command(compiler, path) pyExecIn, _ := pyExec.StdinPipe() pyExecOut, _ := pyExec.StdoutPipe() pyExec.Start() // acitio
var compiler string = "python"
var path string = "...here script path"
pyExec := exec.Command(compiler, path)
pyExecIn, _ := pyExec.StdinPipe()
pyExecOut, _ := pyExec.StdoutPipe()
pyExec.Start()
// acitions
pyExec.Wait()
我可以在stdin中写入数据,但只有在终止脚本后才能读取数据。
为了在进程内获取数据,我决定使用管道,但我只能将消息写入Python脚本。尝试从python读取数据时,进程被阻止。请回答我,这是执行方面的问题,还是Goland管道和pythonic管道不兼容?存在另一种方式连接两个进程(套接字等除外)
去:
Python:
r, w = os.pipe()
r = os.fdopen(r, 'r')
raw_responce = r.read(1024)
# actions
w = os.fdopen(w, 'w')
w.write(data)
谢谢我认为您根本不想使用管道,因为您可以直接访问Go中的标准io。正如您所看到的,您所指的是一个
os.pipe()
。。。与Bash中的|
类似,它由两个命令组成,将第一个命令的输出作为输入发送到第二个命令。但要在Go中实现同样的功能,您只需阅读标准输出,然后调用下一个命令,其中包含io.Reader
,不涉及管道。嗨,Evan,谢谢。但它r, w = os.pipe()
r = os.fdopen(r, 'r')
raw_responce = r.read(1024)
# actions
w = os.fdopen(w, 'w')
w.write(data)