我有一个看起来像这样的结构任务:
@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得到""作为答案而不是回应!!
如果我删除问题?':'回答'从我的提示dict,并手动输入答案,再次,它被某种方式吞噬......
但是,如果我删除了“这是一个测试。”':' q'并手动退出less命令,raw_input的手动或自动响应再次工作。
如果没有随后的答案被吞下,我如何退出?当然,我简化了一个现实生活场景,我无法更改这些文件......
答案 0 :(得分:2)
这必须与终端和交互模式相关+更少的行为。
将pty=False
添加到您的run(..)
参数中,这可以解决您的情况。