这段代码使用了 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 进程并处理其输出结果。具体步骤如下:

  1. 使用 child_process.spawn 方法启动 Python 进程,并传递 Python 解释器路径和 Python 脚本路径作为参数。
  2. 监听 Python 进程的标准输出流 pythonProcess.stdout,并将输出结果打印到控制台。
  3. 监听 Python 进程的退出事件 pythonProcess.on('exit'),根据不同的退出状态码进行不同的处理。

通过这种方式,我们可以方便地将 Python 脚本整合到 Node.js 项目中,并根据 Python 脚本的执行结果进行相应的操作。

使用 Node.js 执行 Python 脚本并处理结果

原文地址: https://www.cveoy.top/t/topic/mOpx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录