从stdin读取密码

时间:2009-11-19 08:25:59

标签: python passwords prompt interactive

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

在bash中,我可以通过

在屏幕上重新提示输入密码
read -s

Python有类似的东西吗?即,

password = raw_input('Password: ', dont_print_statement_back_to_screen)

替代方法:在将类型字符发送回屏幕(又称浏览器样式)之前,将其替换为“*”。

2 个答案:

答案 0 :(得分:270)

>>> import getpass
>>> pw = getpass.getpass()

答案 1 :(得分:52)

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

编辑:我自己还没有使用过这个模块,所以这就是我刚刚编写的内容(如果你在整个地方找到相似的代码,也不会感到惊讶):< / p>

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。)