前言
在做项目时,我遇到了一个应用场景,需要在Nodejs
搭建的环境中使用Python
脚本。万幸的是,万能的Nodejs
为这种应用场景提供了一个很合适的接口,API参见该链接
正文
child_process
模块有两个方法。分别是exec
和execSync
,分别表示异步和同步,原理在于执行cmd命令,并且将输出重定向。
使用方法如下
// call.js
const exec = require('child_process').exec;
const execSync = require('child_process').execSync;
// 异步执行
exec('python web.py',function(error,stdout,stderr){
if(error) {
console.info('stderr : '+stderr);
}
console.log('exec: ' + stdout);
})
// 同步执行
const output = execSync('python web.py')
console.log('sync: ' + output.toString())
console.log('over')
web.py如下
# web.py
import sys
print('web')
print('aaa')
在命令行输入 node call
,打印如下:
sync:web
aaa
over
exec: web
aaa
可知,对于Python脚本里的打印语句都会重定向到Nodejs脚本中,这样就实现了Nodejs与Python脚本的交互。按照这个思路,我们可以使用该API完成很多奇妙的任务,而不仅仅是与Python脚本交互