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中urllib模块用法实例详解
Nov 19 Python
Python爬取京东的商品分类与链接
Aug 26 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
python计算日期之间的放假日期
Jun 05 Python
python实现搜索文本文件内容脚本
Jun 22 Python
Python中捕获键盘的方式详解
Mar 28 Python
python 字段拆分详解
Dec 17 Python
Python操作Sqlite正确实现方法解析
Feb 05 Python
通过代码实例了解Python sys模块
Sep 14 Python
python将下载到本地m3u8视频合成MP4的代码详解
Nov 24 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 Python
用Python写一个简易版弹球游戏
Apr 13 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
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
PHP脚本的10个技巧(8)
2006/10/09 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
yii操作session实例简介
2014/07/31 PHP
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
php中引用符号(&)的使用详细介绍
2016/12/06 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
jquery之empty()与remove()区别说明
2010/09/10 Javascript
javascript中关于执行环境的杂谈
2011/08/14 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
TensorFlow数据输入的方法示例
2018/06/19 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
教学大赛获奖感言
2014/01/15 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
推荐信格式范文
2014/05/09 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书