You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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}`);
});

关键说明

  1. 移除事件绑定的嵌套结构,在进程创建后直接绑定所有监听事件,确保不会错过任何输出
  2. 确认系统中python命令对应的版本:如果你的Python脚本是基于Python3编写,而系统默认python指向Python2,需将spawn('python', ...)改为spawn('python3', ...)
  3. 你的Dummy.py中flush=True的写法是正确的,它能避免Python输出缓冲,确保内容即时传递给Node.js进程

预期运行结果

执行修正后的代码,会输出:

stdout: Hello World
Python process ended with code: 0

内容的提问来源于stack exchange,提问作者Haley Rose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:15:27