本文將詳細介紹通過JS調用Python腳本的方法,包括使用Node.js、Python shell、child_process等三種方法,以及在Web應用中的應用。
一、使用Node.js
Node.js是一個可以在服務器端運行JS腳本的平台,可以通過child_process模塊的spawn方法來執行Python腳本。
const { spawn } = require('child_process');
const pyScript = spawn('python', ['script.py']);
pyScript.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
pyScript.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
pyScript.on('close', (code) => {
console.log(`Python script exited with code ${code}`);
});
上述代碼通過spawn()方法調用Python腳本,將Python腳本的輸出打印到控制台。我們也可以在Python腳本中使用print來輸出結果,然後在JS中獲取到結果。
二、使用Python Shell
Python Shell是一個基於Node.js的模塊,可以在JS中直接調用Python腳本。
const { PythonShell } = require('python-shell');
PythonShell.run('script.py', null, (err, results) => {
if (err) throw err;
console.log('Python script finished.');
console.log('Results:', results);
});
上述代碼通過PythonShell.run()方法調用Python腳本,將結果打印到控制台。
三、使用child_process
除了使用Node.js的spawn方法,我們還可以使用child_process模塊的exec方法來調用Python腳本。
const { exec } = require('child_process');
exec('python script.py', (err, stdout, stderr) => {
if (err) {
console.error(`exec error: ${err}`);
return;
}
console.log('stdout:', stdout);
console.log('stderr:', stderr);
});
四、Web應用中的應用
在Web應用中,我們可以使用Node.js的Express框架來接收HTTP請求,並使用child_process模塊來調用Python腳本。
const express = require('express');
const { spawn } = require('child_process');
const app = express();
app.get('/', (req, res) => {
const pyScript = spawn('python', ['script.py', arg1, arg2]);
pyScript.stdout.on('data', (data) => {
res.send(data.toString());
});
pyScript.stderr.on('data', (data) => {
res.status(500).send(data.toString());
});
pyScript.on('close', (code) => {
console.log(`Python script exited with code ${code}`);
});
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
上述代碼通過Express框架創建了一個HTTP服務器,當服務器接收到GET請求時,將會執行Python腳本,並將Python腳本的結果以HTTP響應的形式返回到客戶端。
總結
通過本文的介紹,我們可以學習到使用Node.js、Python Shell、child_process等多種方法來調用Python腳本,並且可以將它應用到Web開發中。
原創文章,作者:NOFPV,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/373975.html