我有一些J代码,我想在Python脚本的数组变量上运行。 Python数组只是一个带有200个浮点数的变量。我知道内存映射文件,但这似乎是非常低级别和技术。
是否有一种从Python调用J函数或脚本而不退出shell的简单方法,如:
import subprocess
subprocess.check_output(["echo function.ijs | ijconsole"])
使用此方法,我首先需要将我的变量保存到临时文件中,并且J程序需要加载该文件。有更优雅的方式吗?
答案 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
进行通信,但要小心 - 由于缓冲可能会导致死锁。