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文件里调通了. 那么请把你的测试代码干掉...
// 防止出现一些特殊的逻辑问题...

 

 

posted @ 2023-07-27 16:02  屠魔的少年  阅读(7)  评论(0)    收藏  举报