从标准input读取密码

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

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

read -s 

有没有类似的Python? 也就是说,

 password = raw_input('Password: ', dont_print_statement_back_to_screen) 

替代方法:在将input的字符发送回屏幕(也称为浏览器样式)之前,用“*”replaceinput的字符。

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

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

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

 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