在JavaScript和Python之间进行通信,可以通过以下几种常见的方法:
方法一:使用HTTP请求/响应
Python端(使用Flask或Django)
```python
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/api/data', methods=['POST'])
def receive_data():
data = request.json
处理收到的数据
return jsonify({'message': 'Data received'})
if __name__ == '__main__':
app.run(debug=True)
JavaScript端(使用Fetch API)```javascriptfetch('/api/data', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({key: 'value'})
}).then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
方法二:使用execjs模块
Python端
```python
import execjs
def get_js():
with open("index.js", "r", encoding="UTF-8") as file:
return file.read()
file = get_js()
res = execjs.compile(file)
调用JavaScript函数
result = res.call("your_js_function", "argument1", "argument2")
print(result)
JavaScript端(index.js)```javascriptfunction your_js_function(arg1, arg2) {
// JavaScript函数实现
return arg1 + arg2;
}

方法三:使用Node.js作为中介
Python端(使用Flask或Django)
同上。
JavaScript端(使用Node.js)
```javascript
const express = require('express');
const { exec } = require('child_process');
const app = express();
app.post('/api/data', (req, res) => {
const data = req.body;
// 调用Python脚本
exec('python your_python_script.py ' + JSON.stringify(data), (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return res.status(500).send('Error executing Python script');
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
res.json({ message: 'Data received' });
});
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
Python端(your_python_script.py)```pythonimport sys
import json
data = json.loads(sys.argv)
处理数据
print(data)
