Python調(diào)用JS代碼的方法大全
一.pyexecjs的使用
PyExecJS 是一個(gè) Python 庫(kù),用于在 Python 環(huán)境中執(zhí)行 JavaScript 代碼。它實(shí)際上是對(duì) ExecJS 庫(kù)的 Python 封裝,ExecJS 本身是一個(gè)通用的 JavaScript 運(yùn)行環(huán)境的抽象層。使用 PyExecJS,你可以在 Python 中執(zhí)行 JavaScript 代碼,而無需啟動(dòng)一個(gè)完整的 JavaScript 解釋器。它的目標(biāo)是提供一種簡(jiǎn)便的方式,使得在 Python 中嵌入 JavaScript 代碼成為可能,特別是對(duì)于需要JavaScript 交互的項(xiàng)目而言。
安裝方式:
pip install PyExecJS -i https://pypi.tuna.tsinghua.edu.cn/simple/
基本使用方法
(注:導(dǎo)入不需要py,下載要py)
import execjs # 導(dǎo)入
# 生成JavaScript運(yùn)行環(huán)境,環(huán)境名可以指定
node = execjs.get() # 安裝nodejs后,會(huì)得到運(yùn)行環(huán)境名為:Node.js (V8)
with open('1.js', encoding='utf-8') as f:
js_code = f.read()
print(js_code)
# 編譯js代碼
ctx = node.compile(js_code) # compile方法去加載js代碼
# 兩種方式執(zhí)行js函數(shù)
data1 = ctx.eval('get_data({"aa": "123"})') # eval方法中,整個(gè)函數(shù)調(diào)用包含在字符串內(nèi)
print(data1)
data2 = ctx.call('get_data', ['123']) # call方法中,第一個(gè)參數(shù)是函數(shù)名(str),后面接參數(shù)
print(data2)js代碼
function get_data(aa){
return aa
}輸出

以上方法只針對(duì)非異步的js代碼
二.subprocess調(diào)用異步JS
在 Python 中,subprocess 模塊用于創(chuàng)建和管理子進(jìn)程??梢酝ㄟ^端口調(diào)用JS代碼
本質(zhì)是通過端口調(diào)用js代碼注意路徑,python代碼如下:
import subprocess
# 使用 subprocess 模塊執(zhí)行 Node.js 命令
result = subprocess.run(["node", "1.js", "daochu", "7", "5"], capture_output=True, text=True)
# 輸出執(zhí)行結(jié)果
print(f"Node.js 執(zhí)行結(jié)果: {result.stdout.strip()}")JS代碼(注意是輸出console.log,而不是返回return)
function getAsyncData() {
return new Promise(function (resolve, reject) {
resolve(123)
});
}
getAsyncData().then(
function (data){
console.log(data)
}
)輸出結(jié)果

三.express異步接口調(diào)用
簡(jiǎn)單來說,Express 是基于 Node.js 平臺(tái),快速、開放、極簡(jiǎn)的 Web 開發(fā)框架。
下載:
npm install express -S
基本用法
// 1.導(dǎo)入 express
const express = require('express');
// 2.創(chuàng)建 web 服務(wù)器
const app = express();
// 3.get請(qǐng)求 req是請(qǐng)求對(duì)象 res響應(yīng)對(duì)象
app.get('/user', function(req, res){
// 調(diào)用express提供的res.send()方法,向客戶端響應(yīng)一個(gè)JSON對(duì)象
res.send('hello world')
})
// 4.啟動(dòng) web 服務(wù)器
app.listen(8080, function(){
console.log('express server running at http://127.0.0.1:8080/user');
})響應(yīng)返回的結(jié)果

所以簡(jiǎn)單來說如果是異步j(luò)s代碼
// 1.導(dǎo)入 express
const express = require('express');
// 2.創(chuàng)建 web 服務(wù)器
const app = express();
function getAsyncData(){
return new Promise(function (resolve, reject) {
resolve('hello world');
});
}
// 3.get請(qǐng)求 req是請(qǐng)求對(duì)象 res響應(yīng)對(duì)象
app.get('/user', function(req, res){
// 調(diào)用express提供的res.send()方法,向客戶端響應(yīng)一個(gè)JSON對(duì)象
getAsyncData().then(function(data){
res.send(data);
});
})
// 4.啟動(dòng) web 服務(wù)器
app.listen(8080, function(){
console.log(" http://127.0.0.1:8080/user/")
console.log('express server running at http://127.0.0.1:8080');
})然后在本地請(qǐng)求http://127.0.0.1:8080/user/
import requests url = "http://127.0.0.1:8080/user/" response = requests.get(url) print(response.text) print(response)
結(jié)果如下,也是順利調(diào)用了

到此這篇關(guān)于Python調(diào)用JS代碼的方法大全的文章就介紹到這了,更多相關(guān)Python調(diào)用JS代碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解python數(shù)據(jù)結(jié)構(gòu)之棧stack
這篇文章主要介紹了詳解python數(shù)據(jù)結(jié)構(gòu)之棧stack,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05
python實(shí)現(xiàn)簡(jiǎn)單的單變量線性回歸方法
今天小編就為大家分享一篇python實(shí)現(xiàn)簡(jiǎn)單的單變量線性回歸方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11
Python實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之雙端隊(duì)列詳解
這篇文章主要介紹了Python實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之雙端隊(duì)列,詳細(xì)講述了雙端隊(duì)列的概念、功能、定義及Python實(shí)現(xiàn)與使用雙端隊(duì)列的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
詳解Python進(jìn)階之切片的誤區(qū)與高級(jí)用法
切片(slice)就是一種截取索引片段的技術(shù),借助切片技術(shù),我們可以十分靈活地處理序列類型的對(duì)象。這篇文章主要介紹了Python進(jìn)階之切片的誤區(qū)與高級(jí)用法,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
Python Anaconda創(chuàng)建虛擬環(huán)境及Pycharm使用虛擬環(huán)境詳解
文章介紹了如何使用Anaconda創(chuàng)建和管理Python虛擬環(huán)境,并如何在Pycharm中使用這些環(huán)境,這包括創(chuàng)建、激活、退出、刪除、克隆和重命名虛擬環(huán)境的命令,以及如何查看和管理已安裝的Python包,此外,還涉及了如何在Pycharm中配置和使用這些虛擬環(huán)境2025-10-10
pytorch訓(xùn)練時(shí)的顯存占用遞增的問題解決
本文主要介紹了pytorch訓(xùn)練時(shí)的顯存占用遞增的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01

