Найпростіший спосіб, про який я знаю, - це використовувати пакет "child_process", який постачається в комплекті з вузлом.
Тоді ви можете зробити щось на кшталт:
const spawn = require("child_process").spawn;
const pythonProcess = spawn('python',["path/to/script.py", arg1, arg2, ...]);
Тоді все, що вам потрібно зробити, це переконатися, що ви перебуваєте import sys
у вашому сценарії python, і тоді ви зможете отримати доступ, arg1
використовуючи sys.argv[1]
, arg2
використовуючи sys.argv[2]
тощо.
Щоб повернути дані до вузла, просто виконайте наступне в сценарії python:
print(dataToSendBack)
sys.stdout.flush()
І тоді вузол може прослуховувати дані, використовуючи:
pythonProcess.stdout.on('data', (data) => {
// Do something with the data returned from python script
});
Оскільки це дозволяє передавати декілька аргументів до сценарію за допомогою нересту, ви можете реструктурувати сценарій python так, що один з аргументів вирішує, яку функцію викликати, а інший аргумент передається цій функції тощо.
Сподіваюся, це було зрозуміло. Повідомте мене, чи потрібно щось уточнення.