#python #node.js #express #command-line-arguments
#python #node.js #выражать #аргументы командной строки
Вопрос:
Я хотел запустить скрипт python из моего приложения node-express (при попадании в конечную точку). Я хотел передать тело запроса скрипту python в качестве аргумента командной строки (или, если есть какой-либо другой способ).
Я также хочу, чтобы данные, которые возвращает скрипт, были возвращены в качестве ответа.
Кто-нибудь может помочь мне найти способ добиться этого эффективно.
Ответ №1:
Привет
, вы можете использовать пакет «child_process» в своем коде nodejs, запустить свой скрипт на python и установить с ним связь, которая является вашим кодом python
# hello.py
import random, time
while True:
time.sleep(random.random() * 5) # wait 0 to 5 seconds
text = "Hello number " (random.random() * 100)
print(text, flush=True, end='')
И это будет ваш js-код
const { spawn } = require('child_process');
const messages = []; // Store readings
const sensor = spawn('python', ['hello.py']);
sensor.stdout.on('data', function(data) {
messages.push(parseFloat(data));
// Log to debug
console.log(messages);
});
Если вы хотите передать параметр в свой исходный код python, сделайте это
const myList = ["foo", "bar", "baz"];
const { spawn } = require("child_process");
const python = spawn('python',["script.py", JSON.stringify(myList)]);
И это будет ваш код на Python
# script.py
import sys, json
if __name__ == '__main__':
my_list = json.loads(sys.argv[1])
Комментарии:
1. Да, я понял, что вы сказали, но мой основной вопрос заключался в том, как передавать аргументы (в основном объекты JavaScript) в этот код python через node.
2. Ага. Понял. Спасибо, приятель.