用星号屏蔽python中的用户输入


问题内容

我试图用星号掩盖用户输入到IDLE中的内容,以使周围的人看不到他们正在输入/已输入的内容。我正在使用基本的原始输入来收集他们输入的内容。

key = raw_input('Password :: ')

用户输入密码后理想的IDLE提示:

Password :: **********

问题答案:

根据操作系统的不同,如何从用户输入中获取单个字符以及如何检查回车符将有所不同。

看到这篇文章:Python从用户那里读取一个字符

例如,在OSX上,您可以这样:

import sys, tty, termios

def getch():
    fd = sys.stdin.fileno()
    old_settings = termios.tcgetattr(fd)
    try:
        tty.setraw(sys.stdin.fileno())
        ch = sys.stdin.read(1)
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
    return ch

key = ""
sys.stdout.write('Password :: ')
while True:
    ch = getch()
    if ch == '\r':
        break
    key += ch
    sys.stdout.write('*')
print
print key