Передача и получение данных из скрипта Python

#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. Ага. Понял. Спасибо, приятель.