Подпроцесс 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