execjs
能够让你在 Python 环境中运行 JavaScript 代码。它提供了一个接口,可以使用各种 JavaScript 运行时引擎来执行 JavaScript 代码,包括 NodeJS、PhantomJS、PyV8等。
安装
pip install PyExecJS
运行 js 代码
import execjs
# js 代码
js_code = """
function add(x, y) {
return x + y;
}
"""
# 创建一个 JavaScript 运行环境
ctx = execjs.compile(js_code)
# 在 JavaScript 运行环境中调用 JavaScript 函数
result = ctx.call("add", 3, 5)
# JavaScript 代码返回参数
print(result) # 输出:8
call
方法:
- 第一个参数为需要调用的 JavaScript 函数名
- 后续参数为函数的传参
切换运行环境
import execjs
# 使用Node.js运行时
runtime = execjs.get("Node")
# 使用V8运行时
# runtime = execjs.get("V8")
# 在所选的运行时环境中编译并执行JavaScript代码
context = runtime.compile("""
function add(x, y) {
return x + y;
}
""")
result = context.call("add", 3, 5)
读取 js 文件并运行代码
import execjs
with open("qiming.js", encoding='utf-8') as f:
js_code = f.read()
ctx = execjs.compile(js_code)
# call 运行 ctx 中的 js 方法,传递参数 encrpyt_data,并赋值给 decrapy_data
decrapy_data = ctx.call("decrypt", encrypt_data)
print(decrapy_data)
封装函数
import execjs
def run_js_file(js_file, function_name, *args):
"""
读取 JavaScript 文件并执行其中的函数
:param js_file: JavaScript 文件路径
:param function_name: 要调用的 JavaScript 函数名
:param args: 传递给 JavaScript 函数的参数
:return: JavaScript 函数的返回值
"""
with open(js_file, encoding='utf-8') as f:
js_code = f.read()
ctx = execjs.compile(js_code)
result = ctx.call(function_name, *args)
return result