Запуск интерактивной команды из Python

У меня есть скрипт, который я хочу запустить из Python (2.6.5), который следует логике ниже:

Prompt user for password. Looks like ("Enter password: ") (*Note: Input does not echo to screen) Output irrelevant information Prompt user for response ("Blah Blah filename.txt blah blah (Y/N)?: ")

Последняя строка подсказки содержит текст, который мне нужно проанализировать (filename.txt). Предоставленный ответ не имеет значения (программа может фактически завершиться, не предоставив его, пока я могу разобрать строку)

Мои требованияsomewhat похожий наОбертывание интерактивного приложения командной строки в сценарии Python, но ответы там кажутся немного запутанными, и мой по-прежнему зависает, даже когда ОП упоминает, что это не для него.

Оглядываясь вокруг, я пришел к выводу, чтоsubprocess это лучший способ сделать это, но у меня есть несколько проблем. Вот моя линия Попен:

p = subprocess.Popen("cmd", shell=True, stdout=subprocess.PIPE, 
stderr=subprocess.STDOUT, stdin=subprocess.PIPE)

When I call a read() or readline() on stdout, the prompt is printer to the screen and it hangs.

If I call a write("password\n") for stdin, the prompt is written to the screen and it hangs. The text in write() is not written (I don't the cursor move the a new line).

If I call p.communicate("password\n"), same behavior as write()

Я искал несколько идей здесь о том, как лучше всегоstdin и, возможно, как разобрать последнюю строку в выводе, если вы чувствуете себя щедрым, хотя я, возможно, смогу со временем это выяснить.

Ответы на вопрос(2)

Ваш ответ на вопрос