У меня есть задача ткани, которая выглядит так:
@task
def test():
with settings(prompts={'This is a test.': 'q', 'question?':'answer'}):
run("python test.py")
мой скрипт test.py выглядит так:
import subprocess, os
subprocess.call(['less', '-e', os.path.abspath('test.txt')])
response = raw_input("A question?")
print("response is [{0}]".format(response))
И test.txt содержит:
This is a test.
Если я запускаю это и добавляю несколько отпечатков в ткань, чтобы посмотреть, что происходит, действительно при чтении файла ткань находит текст, вводит q. Затем он останавливается на raw_input, отправляет ответ. Но raw_input получает "" в качестве ответа вместо ответа!!
Если я уберу 'вопрос?':'ответ' из своего диктофона подсказок и введу ответ вручную, опять же, он как-то проглотится...
Однако, если я удалю «Это тест.»: «q» и выйду из команды less вручную, ручной или автоматический ответ для raw_input снова сработает.
Как я могу выйти меньше, чтобы мои последующие ответы не были проглочены? Конечно, я упростил сценарий из реальной жизни, когда я не могу изменить эти файлы...