186

场景:一个交互式 CLI Python 程序,需要密码。这也意味着,没有可能的 GUI 解决方案。

在bash中,我可以在不通过屏幕重新提示的情况下读取密码

read -s

Python有类似的东西吗?IE,

password = raw_input('Password: ', dont_print_statement_back_to_screen)

替代方案:在将键入的字符发送回屏幕之前将其替换为“*”(也称为浏览器样式)。

4

2 回答 2

294
>>> import getpass
>>> pw = getpass.getpass()
于 2009-11-19T08:29:02.003 回答
56

getpass的,:“提示用户输入密码而不回显。”

编辑:我自己还没有玩过这个模块,所以这就是我刚刚做的(不过,如果你在各处发现类似的代码也不会感到惊讶):

import getpass

def login():
    user = input("Username [%s]: " % getpass.getuser())
    if not user:
        user = getpass.getuser()

    pprompt = lambda: (getpass.getpass(), getpass.getpass('Retype password: '))

    p1, p2 = pprompt()
    while p1 != p2:
        print('Passwords do not match. Try again')
        p1, p2 = pprompt()

    return user, p1

(这是 Python 3.x;使用Python 2.x 时使用,raw_input而不是。)input

于 2009-11-19T08:29:10.727 回答