球拍程序和python程序之间的通信

cho*_*hom 4 python racket

我想要球拍程序和python程序之间的通信.

我的球拍代码:

#lang racket

(define-values (sp o i e) (subprocess #f #f #f "hello.exe" ))

(display "server" i)

(flush-output i)

(display (read o))
Run Code Online (Sandbox Code Playgroud)

我的python代码:

input_var = raw_input("Enter something: ")

print ("you entered " + input_var)
Run Code Online (Sandbox Code Playgroud)

如果我只是在我的python程序中打印它工作正常.如果我正在阅读球拍程序的输入,它会挂起.我想从球拍中读取消息.

Joh*_*nts 6

它看起来像是挂起的,因为你没有向输出端口发出换行符(\n).以下是我运行代码的方式:

#lang racket

(define-values (sp i o e) (subprocess #f #f #f
                                      "/usr/bin/python"
                                      "/tmp/foo.py"))

(display "server\n" o)

(flush-output o)

(display (read-line i))
Run Code Online (Sandbox Code Playgroud)

...使用"/tmp/foo.py"中提供的代码,我看到了输出:

Enter something: you entered server
Run Code Online (Sandbox Code Playgroud)

......这是我的预期.

这里唯一有趣的区别是我在输出中添加了换行符.

另请注意,我交换了"o"和"i"的名称,因为我不喜欢"o"是输入端口的事实.