2

如何防止输入回声?

尝试过“getpass()”但没有运气。

在 Windows IDLE 上,它不起作用

    Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import getpass
>>> p = getpass.getpass(prompt="Input: ")
Warning: Password input may be echoed.
Input: abc <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< It still echos..

在 Windows 的终端上,它可以工作

Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import getpass
>>> p = getpass.getpass(prompt="Input: ")
Input:
>>>

有没有一种简单的方法可以防止输入回声?

4

1 回答 1

3

我假设您的第一个示例在 IDLE 中。

从 getpass.win_getpass():

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

IDLE 用不同的对象替换 sys.stdin。getpass 检测到有人包装了标准输入,但出于安全原因而失败。

见:http ://bugs.python.org/issue9290

于 2013-07-08T06:46:14.110 回答