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

时间:2012-04-03 07:36:42

标签: python racket

我希望在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))

我的python代码:

input_var = raw_input("Enter something: ")

print ("you entered " + input_var)

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

1 个答案:

答案 0 :(得分: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))

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

Enter something: you entered server

......这就是我的预期。

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

另请注意,我交换了" o"的名称。和"我",因为我不喜欢" o"是一个输入端口。