如何才能在控制台中让用户输入的密码隐藏?

有些情况下,我们需要在控制台中让用户输入密码,而这个时候我们希望输入的内容被隐藏。回想一下 python 中的标准输入输出函数,好像并没有一个函数能够实现这样的功能。但是别慌, python 早就为我们准备了一个标准模块 - getpass 模块。这个模块最常用的其实只有一个函数,那就是:

getpass() - 隐式输入

getpass(str = "Password:") 这个函数非常方便地实现用户的隐式输入。它的用法和 input(str) 这个函数相似。其中 str 指的是提示用户输入的字符串。在被省略时默认输出”Password:”

下面看一个实例:

import getpass
username = input("Username:")
password = getpass.getpass()
print("Hello:", username, ". Your password is ", password)
Username:cometeme
Password:
Hello: cometeme . Your password is123123

可以看到,在 Password: 这一行内,我们输入的所有数据都不会被显示出来。所以说这样特别适合用于输入一些密码类的隐私数据。而 input() 后输入的数据在输入时是会被显示出来的,这样方便用户校对,所以它们各有利弊,也有自己的适用范围。

结语

可能你们会很好奇,为什么 getpass 模块中只有一个函数。其实它里面不止一个函数 – 它有两个,哈哈。还有一个函数就是 getuser() ,它会检测所有可能存储用户名的环境变量,如果不为空就将其返回。只不过这个函数在平时编程时并不是很常用罢了。如果想要更详细地了解这个函数,可以查阅 16.9. getpass — Portable password input