使用node.js调用本地python代码

2023/7/19

使用Node的child_process​库,可以创建并管理子进程。其具体函数为spawn​。

# Node示例代码如下:

const spawn = require('child_process').spawn
const py = spawn('python3', ['a.py'])

console.log('start…………')

py.stdout.on('data', function (res) {
  let data = res.toString()
  console.log('stdout: ', data)
})
py.stderr.on('data', function (res) {
  let data = res.toString()
  console.log('stderr: ', data)
})
py.on('close', (code) => {
  console.log(`子进程退出:退出代码code ${code}`)
})

console.log('end.')

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 调用的Python脚本a.py代码如下:

import time
print('python start',flush=True)
time.sleep(10)  #等待10秒
print('python end',flush=True)
1
2
3
4

# 结束

用Node执行js脚本后,由于js都是异步操作,因此会执行语句打印“start…………”和“end.”。

Node父进程会等待Python子进程执行完成。

因为监听了stdout,当Python子进程打印到stdout的内容,会被Node父进程接受并显示。

因为监听了close消息,当Python子进程退出时,Node父进程也会监听到退出信号。