从Python调用J

时间:2018-01-31 19:14:43

标签: python j

我有一些J代码,我想在Python脚本的数组变量上运行。 Python数组只是一个带有200个浮点数的变量。我知道内存映射文件,但这似乎是非常低级别和技术。

是否有一种从Python调用J函数或脚本而不退出shell的简单方法,如:

import subprocess
subprocess.check_output(["echo function.ijs | ijconsole"])

使用此方法,我首先需要将我的变量保存到临时文件中,并且J程序需要加载该文件。有更优雅的方式吗?

1 个答案:

答案 0 :(得分:2)

如果您有一个字符串将数据传递给子进程的输入,并希望一次读取所有输出,请使用Popen.communicate()

j_process = subprocess.Popen(["ijconsole"],
                             stdin=subprocess.PIPE, stdout=subprocess.PIPE)
j_output, _ = j_process.communicate(j_input)

如果交互更复杂,您可以使用Popen.stdin / Popen.stdout进行通信,但要小心 - 由于缓冲可能会导致死锁。