Обычно с этим можно справиться с помощью .interact (), которая помещает подпроцесс в текущий процесс. Однако похоже, что вы не хотите взаимодействовать, но хотите управлять подпроцессом от родителя.
Должно получиться что-то вроде этого:
import pexpect
p = pexpect.spawn('nano cheese')
output = []
while p.isalive():
output.append(p.read_nonblocking(100000))
#Conditionals about what is in output could be put here.
#You can also tell pexpect to block until it finds specific strings, with .expect()
p.sendline(input().encode())
Пытаясь следить за тем, что должно быть набрано в "nano", я думаю, вы хотите сделать что-то вроде этого:
y #answer yes to first question
^X #exit nano
n #no, don't save
<enter> #anything sent should end the process here.
Предполагается, что «nano» не запросил что-то неожиданное, например, файл или что-то в этом роде, et c. Вы можете использовать p.expect для инициирования определенных действий на основе строк, которые отображаются в выводе. Распечатайте вывод, чтобы увидеть, что вам отправляет "nano".
print(output)