nodejs(javascript)执⾏python脚本
js脚本编程入门现在有需求对python脚本进⾏本地化执⾏,我就⾃⼰写了个包,供⼤家使⽤,可以互相学习⽬标
项⽬的⽬标是让nodejs可以正常并⽆缝使⽤ python脚本
同时⽀持回调函数的传递
通过异步⽅式在本地服务器后端执⾏python脚本/ipynb格式的⽂件/以及python字符串
1.机制
充分利⽤node的异步加载的能⼒,通过child_pross中的spawn机制(异步的异步),
基于promise封装执⾏并输出正常或错误的打印记录,实现实时检测python的处理结果
2.可以执⾏
1. python字符串,即符合标准的python脚本,调⽤ runpytext
2. ⽀持 .py⽂件 runpath
3. ⽀持 .ipynb (jupyter格式的⽂件) run_ipynb_code
注意:.ipynb根据官⽅说明,由于其存储的是⼀种json格式,也就是说暂时还⽆法直接执⾏
程序,故在执⾏.ipynb程序的时候需要通过官⽅的jupyter nbconvert ⽅式对.ipynb进⾏格
式的转换/⽬前是存于tmp临时⽂件中(⽀持window以及linux系统),再通过正常机制
(runpath)处理python脚本
3.错误处理机制
当python执⾏处理出错会抛出异常,可以通过回调函数捕捉异常
4.使⽤⽅法安装项⽬包⽅法
$ npm install --save jsexecpy
使⽤⽅式
1. 字符串功能
> let jsexecpy = require("jsexecpy")
> jsexecpy.runpytext("import os;import time;time.sleep(1);print('you are my love');time.sleep(5);a = 2;a+=1;print(a)")
2. 执⾏.py⽂件
> let jsexecpy = require("jsexecpy")
> jsexecpy.runpath("/home/.../test.py",callback)
3. 执⾏.ipynb⽂件
> let jsexecpy = require("jsexecpy")
> jsexecpy.run_ipynb_code("/home/.../test.ipynb",callback)
4. callback 写法
callback返回的是{data,pythonpath} ,即打印⽇志数据,以及执⾏脚本的路径
> let callback = function({data,pythonpath},otherargs = 11,...){
dosomething(data,pythonpath,otherargs)
}
> jsexecpy.runpath("path.py",callback)
> jsexecpy.run_ipynb_code("path.ipynb",callback)
5. python⽂件传参更新
python a b c -p=a --list=bb
传参有两种⽅式
a) string type
> let params = "a b c -p=a --list=bb"
> jsexecpy.runpath_with_params("some.py",params,callback)
b) array type
> let paramslist = ["a","b" ,"c", "-p=a", "--list=bb"]
> jsexecpy.runpath_with_params("some.py",paramslist,callback)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论