Python Fabric提示:奇怪的行为,少了'和raw_input

时间:2017-11-02 20:33:04

标签: python fabric raw-input less-unix

我有一个看起来像这样的结构任务:

@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的手动或自动响应再次工作。

如果没有随后的答案被吞下,我如何退出?当然,我简化了一个现实生活场景,我无法更改这些文件......

1 个答案:

答案 0 :(得分:2)

这必须与终端和交互模式相关+更少的行为。

pty=False添加到您的run(..)参数中,这可以解决您的情况。