PyExeJs模块
pyexecjs是一个可以帮助我们运行js代码的一个第三方模块. 其使用是非常容易上手的.
但是它的运行是要依赖能运行js的第三方环境的. 这里我们选择用node作为我们运行js的位置.
安装Nodejs









安装pyexecjs
pip install pyexecjs
测试一下:
import execjs
print(execjs.get().name) # Node.js (V8)
简单使用
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')
import execjs
print(execjs.get().name)
# execjs.eval 可以直接运行js代码并得到结果
js = """
"鲁班_王昭君_猴子_亚瑟_蔡文姬".split("_")
"""
res = execjs.eval(js)
print(res)
# execjs.compile() 事先加载好一段js代码,
jj = execjs.compile("""
function an(a, b){
return a + b
}
""")
# call() 运行代码中的xxx函数. 后续的参数是xxx的参数
# call(函数, 参数1, 参数2,.....)
ret = jj.call("an", 10, 20)
print(ret)
windows中如果出现如下编码错误:
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x98
在引入execjs之前. 插入以下代码即可.
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')
import execjs
完事儿. 你没有看错. execjs就这几个功能就够咱用的了.
python调用js_pyexecjs模块
import subprocess
from functools import partial
subprocess.Penpen = partial(subprocess.Popen, encoding = 'utf-8')
import execjs
# 读取js代码
f = open("test.js", mode="r", encoding="utf-8")
js_code = f.read() # 读取所有js代码
f.close()
# 加载代码
js_exec = execjs.compile(js_code)
# ret = js_exec.call("fn") # 直接调用js中的fn函数
ret = js_exec.call("fn",10,30) # 参数直接写
print(ret)
test.js
function fn(a, b){
return a + b;
}
// 在使用python调用之前.一定要在js文件里调通它...
// // console.log(fn(1,2))
// 如果你已经在js文件里调通了. 那么请把你的测试代码干掉...
// 防止出现一些特殊的逻辑问题...
浙公网安备 33010602011771号