【发布时间】:2020-07-21 18:07:56
【问题描述】:
可以在Node.js中使用readline读取一行python代码,然后作为子进程发送到python交互shellspawned,然后接收输出?
我知道这是可能的:
import { spawn } from "child_process";
const py = spawn("python", ["-i"]);
py.stdout.on("data", (data) => {
console.log(`stdout: ${data}`);
});
py.stdin.write('print("hello from python!")\n');
// will get 'stdout: hello from python!'
但是,这不起作用:
import { spawn } from "child_process";
import * as readline from "readline";
const py = spawn("python", ["-i"]);
py.stdout.on("data", (data) => {
console.log(`stdout: ${data}`);
});
py.stdin.write('print("hello from python!")\n');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.prompt();
rl.on("line", (line) => {
py.stdin.write(line);
rl.prompt();
}).on("close", () => {
process.exit()
});
我想这样做是因为我想在 Node.js 中为 python 开发一个接口。通过spawn 执行独立的python 命令/文件很简单,但我想构建一个功能齐全的界面,它具有与R 中的Reticulate 类似的功能。
【问题讨论】:
标签: javascript python node.js ffi read-eval-print-loop