在IDLE中关闭getpass.getpass()的echo

时间:2017-03-31 13:37:26

标签: python-3.x python-idle

我想在没有回声的Windows中的IDLE终端输入密码。

通常使用函数getpass.getpass()可以使用python输入密码,但在IDLE中会出现以下警告消息:

GetPassWarning: Can not control echo on the terminal. 
Warning: Password input may be echoed.

我发现,这是因为IDLE用不同的对象替换了sys.stdin:

if sys.stdin is not sys.__stdin__:
    return fallback_getpass(prompt, stream)

然而,我找不到解决方案。是否有人有答案或其他方式在IDLE终端输入密码而没有回音?

1 个答案:

答案 0 :(得分:3)

作为一个熟悉IDLE内部的IDLE维护者,我不相信可以抑制字符显示,但不会在没有对IDLE代码进行重大更改的情况下更改行为以响应input('prompt')

但即使这对getpass.getpass来说还不够,因为它会调用unix_getpasswin_getpassdefault_getpass之一,前两个使用 system_specific 绕过标准输入的低级函数。

就设计意图而言:正如其名称所示,IDLE是一个程序开发环境。通常,有时必须由Python直接执行开发的程序,而不通过IDLE。 Python通常运行附加到终端窗口。 IDLE的Shell基于tkinter Text小部件,它是一个多行编辑器,而不是终端。这就是为什么人们可以输入,调用和编辑完整的多行语句,而不是一次只能输入一行。

相关问题