В продолжение моего предыдущего вопроса о создании интерактивных меню параметров в pexpect напечатайте операторы в фильтре ввода взаимодействия не отправляются на стандартный вывод до тех пор, пока взаимодействие не будет завершено.
Документы, похоже, не содержат эквивалентного метода send_user из expect, есть ли какое-либо обходное решение для отправки вывода пользователю, а не порожденному дочернему элементу из метода взаимодействия pexpect?
bash-4.1$ cat testInputFilter.py
import pexpect
def input_filter(s):
if s == b'\003':
print('you pushed ctrl+c')
return b'\r: r u going to kill me? press ctrl-d to exit!\r'
elif s == b'\004':
print('you pushed ctrl+d')
return b'\r: ok, bye; exit\r'
else:
return s
proc = pexpect.spawn('bash --norc')
proc.interact(input_filter=input_filter)
proc.expect(pexpect.EOF)
bash-4.1$ ~/python/python36/bin/python3.6 testInputFilter.py | tee inputTest.txt
bash-4.1$
bash-4.1$ : r u going to kill me? press ctrl-d to exit!
bash-4.1$
bash-4.1$ : ok, bye; exit
exit
you pushed ctrl+c
you pushed ctrl+d
bash-4.1$
| tee inputTest.txt
? - person   schedule 02.03.2018