使用 Node.js 执行 Python 脚本并处理结果
这段代码使用了 Node.js 中的 child_process 模块中的 spawn 方法来启动一个 Python 子进程,并在子进程中执行指定的 Python 脚本。同时,该代码监听子进程的标准输出流,即 pythonProcess.stdout,通过 console.log 将输出结果打印到控制台上。在子进程执行完毕后,根据不同的退出状态码,分别进行不同的处理,如渲染不同的网页或输出错误信息。
const spawn = require('child_process').spawn;
router.get('/:id', (req, res, next) => {
const scriptPath = path.join(__dirname, '../public/pythonscripts/electric_substation_drawer/venv/main.py');
console.log(scriptPath);
console.log(req.params.id);
const pythonProcess = spawn('python', [scriptPath, req.params.id]);
pythonProcess.stdout.on('data', (pythonresult) => {
console.log(pythonresult.toString());
});
// pythonProcess.stderr.on('data', (data) => {
// console.log('*************' + data.toString());
// res.render('error', { message: 'python process Error', error: { status: 500, stack: data } });
// });
pythonProcess.on('exit', function (code, signal) {
console.log('python 进程已退出,代码:' + code);
if (code == 0) {
try {
console.log('绘制成功');
res.render('substation');
} catch (error) {
console.error(error);
res.render('error', { message: 'Error', error: { status: 500, stack: data } });
}
}
if (code == 255) {
console.log('没有厂站图');
res.render('error', { message: '该厂站没有厂站图', error: { status: '', stack: '' } });
}
if (code == 1) {
console.log('绘制失败');
res.render('error', { message: '厂站图绘制失败', error: { status: '', stack: '' } });
}
});
});
该代码示例演示了如何在 Node.js 中启动 Python 进程并处理其输出结果。具体步骤如下:
- 使用
child_process.spawn方法启动 Python 进程,并传递 Python 解释器路径和 Python 脚本路径作为参数。 - 监听 Python 进程的标准输出流
pythonProcess.stdout,并将输出结果打印到控制台。 - 监听 Python 进程的退出事件
pythonProcess.on('exit'),根据不同的退出状态码进行不同的处理。
通过这种方式,我们可以方便地将 Python 脚本整合到 Node.js 项目中,并根据 Python 脚本的执行结果进行相应的操作。
原文地址: https://www.cveoy.top/t/topic/mOpx 著作权归作者所有。请勿转载和采集!