Подпроцесс Python: взаимодействие со сценарием оболочки

У меня есть сценарий оболочки, который задает пользователю слишком много вопросов.

Я хочу ответить на каждый вопрос, который заканчивается : с вводом, и каждый вопрос, который заканчивается ? с yвойти

например,

Введите ваше имя:войти Введите адрес электронной почты:войти...

Вы уверены, что эти данные верны?увхода

Я начал подпроцесс с:

subprocess.Popen(shell=True, stdout=sp.PIPE, stderr=sp.STDOUT, stdin=sp.PIPE)

Как я опрашиваю вывод скрипта, ожидая появления вопроса?

1 ответ

Решение

Попробуйте что-то вроде этого (я не проверял):

import pexpect

child = pexpect.spawn('yourprogram')
while True:
  found = child.expect ([r':$', r'\?$', pexpect.EOF])
  if found == 0:
    child.send('\n')
  elif found == 1:
    child.send('y\n')
  else:  # EOF
     return
Другие вопросы по тегам