python如何运行js语句


Posted in Python onSeptember 09, 2020

1. 安装

pip install PyExecJS  # 需要注意, 包的名称:PyExecJS

2. 简单使用

import execjs
execjs.eval("new Date")
返回值为: 2018-04-04T12:53:17.759Z
execjs.eval("Date.now()")
返回值为:1522847001080  # 需要注意的是返回值是13位, 区别于python的time.time()

需要注意的是: 个别的JS语句, 用execjs返回的结果跟浏览器环境返回的结果是有区别的, 以下是浏览器环境返回的结果:

python如何运行js语句

3. 调用函数

# 实际生产中处理的js有几百几千行, 不方便贴上来。来看一下源码中给的例子:
  ctx = execjs.compile("""
        function add(x, y) {
                return x + y;
           }
""")
  ctx.call("add", 1, 2)  # 第一个参数 “add” 为JS函数名的字符串, 后边依次为实参
  返回值:3

execjs的用法非常简单, 下边来看一下执行JS的环境, 以及性能:

4. 执行JS的环境

在windows上不需要其他的依赖便可运行execjs, 也可以调用其他的JS环境

windows 默认的执行JS的环境
execjs.get().name
返回值: JScript
作者本人的windows上装有Node.js , 所以返回值不同
execjs.get().name
返回值: Node.js (V8)

在ubuntu下需要安装执行JS环境依赖, 作者的环境为PhantomJS

execjs.get().name
返回值: PhantomJS

源码中给出, 可执行execjs的环境:

PyV8         = "PyV8"
Node         = "Node"
JavaScriptCore    = "JavaScriptCore"
SpiderMonkey    = "SpiderMonkey"
JScript       = "JScript"
PhantomJS      = "PhantomJS"
SlimerJS       = "SlimerJS"
Nashorn       = "Nashorn"

在ubuntu环境下,没有JS环境会报错:Could not find an available JavaScript runtime. 由此可见,execjs在ubuntu需要安装JS环境 。具体的JS环境需根据具体的需求安装, 切不可超过以上8种。

5.环境切换

通过os.environ

os.environ["EXECJS_RUNTIME"] = "Node"
execjs.get().name
execjs.eval("1 + 2")

通过execjs.get 切换

jscript = execjs.get(execjs.runtime_names.JScript)  # runtime_names 便是execjs源码中给出的执行环境的。 
execjs.runtime_names.xxx  xxx必须在上一节 #3中取
jscript.eval("1 + 2")

注: 在切换环境时, 当环境不存在不会报错, 会使用默认的环境。 另外需要注意的是, 两种方式的区别

6. 简易性能分析

# 只简单试了三种, 在windows下
import  execjs
import os
import time
# 先用JScript
os.environ["EXECJS_RUNTIME"] = "JScript"
print execjs.get().name
time1 = time.time()
for i in range(100):
    execjs.eval("new Date")
print time.time() - time1
# 切换环境 使用Nodejs
os.environ["EXECJS_RUNTIME"] = "Node"
print execjs.get().name
time2 = time.time()
for l in range(100):
    execjs.eval("new Date")
print time.time() - time2
# 打印的结果为:
JScript
4.70900011063
Node.js (V8)
27.501999855
# 在ubuntu下试的是PhantoJS , 结果竟然高达 30+ S

以上就是python如何运行js语句的详细内容,更多关于python运行js语句实例的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
浅谈scrapy 的基本命令介绍
Jun 13 Python
一份python入门应该看的学习资料
Apr 11 Python
Python 面试中 8 个必考问题
Nov 16 Python
对python以16进制打印字节数组的方法详解
Jan 24 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
Django实现简单网页弹出警告代码
Nov 15 Python
Python实现微信好友的数据分析
Dec 16 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
Feb 26 Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 Python
如何使用 Flask 做一个评论系统
Nov 27 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 Python
Python基础教程,Python入门教程(超详细)
Jun 24 Python
python如何爬取动态网站
Sep 09 #Python
python如何停止递归
Sep 09 #Python
python能做哪些生活有趣的事情
Sep 09 #Python
Python 连接 MySQL 的几种方法
Sep 09 #Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 #Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 #Python
Python列表推导式实现代码实例
Sep 09 #Python
You might like
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
JavaScript高级程序设计
2006/12/29 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
js检测用户输入密码强度
2015/10/22 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
jQuery实现模糊查询的方法分析
2018/05/10 jQuery
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
python模拟鼠标拖动操作的方法
2015/03/11 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
Python数据存储之 h5py详解
2019/12/26 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
python三引号如何输入
2020/07/06 Python
python音频处理的示例详解
2020/12/23 Python
CSS3 边框效果
2019/11/04 HTML / CSS
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
工业自动化专业自荐信范文
2014/04/10 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
欢迎新生标语
2014/10/06 职场文书
鲁迅故居导游词
2015/02/05 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
感恩教师节主题班会
2015/08/12 职场文书
创业计划书之寿司
2019/07/19 职场文书
创业计划书之家教中心
2019/09/25 职场文书
七年级作文之游记
2019/12/11 职场文书
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL