execjs 直接执行整个js脚本而不是执行一条语句
时间: 2023-08-13 09:09:04 浏览: 166
可以使用 `exec()` 函数来执行整个 JavaScript 脚本,示例如下:
```python
import execjs
with open('script.js', 'r') as f:
js_code = f.read()
ctx = execjs.compile(js_code)
ctx.exec_()
```
其中,`ctx.exec_()` 函数可以执行整个 JavaScript 脚本。需要注意的是,`ctx.exec_()` 函数并不返回执行结果,如果需要获取执行结果,需要在 JavaScript 脚本中使用 `console.log()` 函数输出结果,然后在 Python 中通过 `subprocess` 模块来获取输出结果,示例如下:
```python
import execjs
import subprocess
with open('script.js', 'r') as f:
js_code = f.read()
ctx = execjs.compile(js_code)
result = subprocess.check_output(['node', '-e', ctx._executed])
print(result.decode().strip())
```
其中,`subprocess.check_output()` 函数使用 `node` 命令来执行 JavaScript 代码,并通过 `-e` 参数来传递执行的代码,`ctx._executed` 属性是编译后的 JavaScript 代码。最后通过 `print()` 函数输出执行结果。
阅读全文