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 相关文章推荐
Python实现方便使用的级联进度信息实例
May 05 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
Python管理Windows服务小脚本
Mar 12 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
Apr 22 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
Flask框架实现给视图函数增加装饰器操作示例
Jul 16 Python
CentOS 7 安装python3.7.1的方法及注意事项
Nov 01 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
python 实现将list转成字符串,中间用空格隔开
Dec 25 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
Django框架获取form表单数据方式总结
Apr 22 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
PHP中对数据库操作的封装
2006/10/09 PHP
php配合jquery实现增删操作具体实例
2013/12/12 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
js中的this关键字详解
2013/09/25 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
Python本地与全局命名空间用法实例
2015/06/16 Python
浅谈python3中input输入的使用
2019/08/02 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
精伦电子Java笔试题
2013/01/16 面试题
营销与策划个人求职信
2013/09/22 职场文书
优秀员工表扬信
2014/01/17 职场文书
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
欢迎领导检查标语
2014/06/27 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
深入浅析React中diff算法
2021/05/19 Javascript
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
python和anaconda的区别
2022/05/06 Python