📜  使用 Node.js 中的 PythonShell 运行Python脚本(1)

📅  最后修改于: 2023-12-03 15:06:48.982000             🧑  作者: Mango

使用 Node.js 中的 PythonShell 运行 Python 脚本

在 Node.js 应用中调用 Python 脚本是一种非常灵活而且具有实用性的技巧,可以让我们将 Python 的优势与 Node.js 的优势结合起来。PythonShell 是一个 Node.js 模块,它提供了一个能够运行 Python 代码的接口。在本文中,我们将看到如何使用 PythonShell 在 Node.js 中运行 Python 脚本。

安装 PythonShell

安装 PythonShell 很简单,只需要在命令行中运行下面的命令即可:

npm install python-shell
简单的示例

下面是一个简单的示例,演示如何使用 PythonShell 在 Node.js 中运行 Python 脚本:

const {PythonShell} = require('python-shell');

PythonShell.run('my_script.py', null, function (err) {
  if (err) throw err;
  console.log('Python script executed successfully.');
});

这段代码会运行名为 my_script.py 的 Python 脚本。如果 Python 脚本有任何错误,将抛出错误。否则,Node.js 控制台将打印出一条消息,表示 Python 脚本已经成功执行。

需要注意的是,这段代码中的第二个参数 null 是 Python 脚本的参数列表。如果需要向 Python 脚本传递参数,可以将它们作为数组传递。

传递参数给 Python 脚本

我们可以将参数作为数组传递给 PythonShell.run() 函数,例如:

const {PythonShell} = require('python-shell');

let options = {
  args: ['apple', 'orange', 'banana']
};

PythonShell.run('my_script.py', options, function (err) {
  if (err) throw err;
  console.log('Python script executed successfully.');
});

在上面的示例中,PythonShell.run() 函数第二个参数是一个包含参数列表的对象。这样,当 Python 脚本被执行时,它会接收到指定的参数列表。

我们可以在 Python 脚本中通过 sys.argv 获取参数值,例如:

import sys

print("Arguments: ", sys.argv)
获取 Python 脚本的输出

PythonShell 模块提供了一个 .on('message', function) 事件,可以用来获取 Python 脚本的输出,并在 Node.js 中处理它。例如:

const {PythonShell} = require('python-shell');

PythonShell.run('my_script.py', null, function (err, results) {
  if (err) throw err;
  console.log('Python script executed successfully:', results);
})
.on('message', function (message) {
  console.log('Python script output: ', message);
});

在这个示例中,.on('message', function) 事件被用来获取 Python 脚本的输出。可以通过 message 参数访问 Python 脚本的输出。

结论

PythonShell 模块为 Node.js 应用程序提供了一个简单而灵活的方法来执行 Python 脚本。我们可以轻松地传递参数,获取脚本的输出,并处理任何错误。这个模块在许多不同的情况下都很有用,例如调用机器学习算法、处理自然语言文本等等。