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