BenderLib
@BenderLib
JS

Как передать в поток ввода данные?

Предположим есть скрипт на python, который запрашивает ввод данных, например так:
def who():
      name = input('You name\n')
      print(name);

who()


Так же есть скрипт на JavaScript, который вызывает скрипт на python:
const spawn = require('child_process').spawn;
const test = spawn('python3', ['test.py'])

test.stdout.on('data', (data) => {
  console.log(data.toString('utf8'))
});

test.on('close', (code) => {
  console.log(code);
});

В итоге при запуске скрипта на JS, в поток stdout выводится "You name" и пользователь должен ввести данные.

Подскажите, пожалуйста, как сделать так, чтобы в поток ввода подставлялись значения к примеру из какой нибудь переменной и на stdout выводился конечный результат. Буду благодарен за любые подсказки и примеры. Спасибо.
  • Вопрос задан
  • 511 просмотров
Решения вопроса 2
romy4
@romy4
Exception handler
test.stdin.write("Username");

здесь нельзя вроде ссылки на стековерфлоу
так что вот прмер

var spawn = require('child_process').spawn,
    child = spawn('phantomjs');

child.stdin.setEncoding('utf-8');
child.stdout.pipe(process.stdout);

child.stdin.write("console.log('Hello from PhantomJS')\n");
Ответ написан
BenderLib
@BenderLib Автор вопроса
JS
Вроде как можно вот так значение передать, нашел в документации

const child_process = require('child_process');
var name = "User"

var script = child_process.spawnSync('python3', ['test.py'], { 
  encoding: 'utf8',
  input: name
  });

console.log(script.output[1])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы