如何用TypeScript调用返回字符串的Python函数?现有实现无输出
TypeScript调用Python脚本无法获取输出的解决办法
你的代码核心问题是错误地在stdout的data事件回调内部嵌套绑定了各类事件,导致第一次stdout触发回调时才去绑定后续监听,此时Python的输出可能已经被处理完毕,自然捕获不到内容。
修正后的代码
hello-world.ts
const { spawn } = require('child_process'); // 注意:若系统默认python指向Python2,需替换为python3 const sensor = spawn('python', ['dummy.py']); // 直接绑定stdout监听,无需嵌套 sensor.stdout.on('data', (data) => { console.log(`stdout: ${data}`); }); // 监听Python的错误输出 sensor.stderr.on('data', (data) => { console.error(`stderr: ${data}`); }); // 监听进程退出状态 sensor.on('exit', (code) => { console.log(`Python process ended with code: ${code}`); });
关键说明
- 移除事件绑定的嵌套结构,在进程创建后直接绑定所有监听事件,确保不会错过任何输出
- 确认系统中
python命令对应的版本:如果你的Python脚本是基于Python3编写,而系统默认python指向Python2,需将spawn('python', ...)改为spawn('python3', ...) - 你的
Dummy.py中flush=True的写法是正确的,它能避免Python输出缓冲,确保内容即时传递给Node.js进程
预期运行结果
执行修正后的代码,会输出:
stdout: Hello World Python process ended with code: 0
内容的提问来源于stack exchange,提问作者Haley Rose
相关产品推荐
相关产品推荐

