Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python结构:如何响应键盘输入?_Python_Automation_Fabric - Fatal编程技术网

Python结构:如何响应键盘输入?

Python结构:如何响应键盘输入?,python,automation,fabric,Python,Automation,Fabric,我想自动回答一些程序提示的问题,比如mysql提示输入密码,或者apt询问“是”或。。。当我想用./manage.py rebuild\u索引重建我的haystack索引时 对于MySQL,我可以使用--password=switch,并且我确信apt有一个类似“安静”的选项。但是我如何才能将响应传递给其他程序呢?为什么您不能直接使用 例如,对于自动自动接受,只需使用,它只输出一个不间断的y流 yes | rm *.txt (来源:)如果您正在寻找用户来确认操作,请使用confrim方法 i

我想自动回答一些程序提示的问题,比如mysql提示输入密码,或者apt询问“是”或。。。当我想用./manage.py rebuild\u索引重建我的haystack索引时

对于MySQL,我可以使用--password=switch,并且我确信apt有一个类似“安静”的选项。但是我如何才能将响应传递给其他程序呢?

为什么您不能直接使用

例如,对于自动自动接受,只需使用,它只输出一个不间断的
y

yes | rm *.txt


(来源:)

如果您正在寻找用户来确认操作,请使用confrim方法

if fabric.contrib.console.confirm("You tests failed do you want to continue?"):
  #continue processing
或者,如果您正在寻找从用户获取输入的方法,请使用prompt方法

password = fabric.operations.prompt("What is your password?")

这两种方法都是有效和有效的

我选择第一个,因为我不想与部署系统进行任何交互

下面是我使用的解决方案:


%是|/manage.py重建|/u索引

警告:这将不可修复地从搜索索引中删除所有内容。 在此之后,您可以选择从备份中恢复或通过
rebuild\u index
命令进行重建。 您确定要继续吗?[是/否] 因为您这样说,所以正在从索引中删除所有文档。 删除所有文件。 为27个项目编制索引。

Fabric(1.0a)的开发版本现在支持与远程程序的交互。 使用以下代码:

run("echo yes|./manage.py rebuild_index")

迟来的回答,但希望这能帮助有类似问题的人

不同点:

  • 向控制台应答两个或多个不同的输入
  • 支持
  • 包括任何类型的输入
    yes/no/y/n
  • 问题

    解决方案:

    使用
    printf
    而不是
    yes
    来增加更多的灵活性,同时这就像
    parallel
    模式下的魅力一样

    @parallel
    def demo_multi_input():
        run('printf "o\nyes\n"|./configure --prefix=/home/work/bin/qt')
    

    与其使用Fabric的提示输入密码,我建议您导入getpass并使用它,这样您就不会在输入密码时在终端上显示密码。对于非密码输入,我同意Fabric的提示很好使用。在fabric2中:
    invocations.console.confirm(“您真的想这样做吗?”)
    invocations
    现在是一个独立的包)Fabric现在是1.0.1,url是Fabric,现在是1.5,url是。文档没有明显的变化。这很有趣。好的,这是1.10的:。下一次更新不应该早于2017年,有望在Fabric 2上更新!1.13在这里。你们说在2011年,2013年,2015年。。。我应该加上一个……现在是2017年如果命令有时提示,有时不提示,该怎么办?如果我有一个复杂的命令,询问2-3次是/否和之后的数值,该怎么办?
    @parallel
    def demo_multi_input():
        run('printf "o\nyes\n"|./configure --prefix=/home/work/bin/qt')