从标准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
)