通过Python子进程与R脚本交互

时间:2013-04-02 13:30:35

标签: python r subprocess

我想知道如何打开R脚本并与之交互(例如,发送字符串,整数等)。虽然我之前没有使用它,但子进程似乎是一种合理的方法。

到目前为止,我有

process = subprocess.Popen(['/path/to/Rscript --no-save path/to/script.R'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)

这似乎是成功打开script.R,但是在我的脚本中我提示用户输入一个整数,我不能完全理解如何做到这一点。我试过了:

process.communicate(input=1)[0]

但我似乎在咆哮着错误的树。子进程关闭但不会显示接收此输入。

编辑:此时Rpy可能不是一个好的选择,因为此脚本的用户不一定能访问该模块及其依赖项。

2 个答案:

答案 0 :(得分:2)

试试PypeR?

通过管道在python中使用R是一个很棒的界面。

答案 1 :(得分:1)

<强> EDIT2

怎么样?

process = subprocess.Popen(['/path/to/Rscript', '--no-save', 'path/to/script.R'], stdout=subprocess.PIPE, stdin=subprocess.PIPE)

<强> EDIT1

您只能通过stdin和stdout在进程之间进行通信。

process.communicate("1\n")会帮助你吗?