我正在尝试创建一个检查用户密码强度的小程序。当提示用户输入密码时,我希望输入显示为星号或点而不是文本输入。有没有办法隐藏这个输入。
我使用getpass尝试隐藏输入但没有成功。
from getpass import getpass
passwd = getpass('Please enter your password')
这给了我以下警告信息:
警告(来自警告模块): 文件" C:\ Program Files(x86)\ Python36-32 \ lib \ getpass.py",第100行 return fallback_getpass(提示,流) GetPassWarning:无法控制终端上的echo。 警告:可以回显密码输入。 请输入您的密码:this_is_my_password
密码是在线上输入的,但它没有提供astrisks,而是提供了原始字符。
由于程序会检查密码的强度,我需要有一些东西不能将密码保存为星号,而是保存为原始字符。
除此之外,如果他们执行操作,还有一种方法可以显示用户密码。我正在考虑使用一个按钮,但这是Python中的一个区域我不自信,所以我可以使用特定的密钥以其他方式编程。
项目的Sudo代码。
userPass = hidden(input("Please enter your password "))
if showPassword selected:
show the password
else:
move on with the rest of the program
答案 0 :(得分:2)
getpass
模块包含一个getpass
函数,其工作方式与input()
类似,但它会关闭终端回显。
结果是输入的密码,您可以根据需要使用该密码来确定其强度或打印,但在用户输入密码时,除了提示之外不会打印任何内容。
>>> from getpass import getpass
>>> passwd = getpass('Please enter your password')
Please enter your password
>>> print passwd
This is my password
答案 1 :(得分:1)
警告基本上意味着您在Python无法使用常规交互式IOCTL调用来实现仅星号功能的环境中运行程序。从IDE内部运行程序基本上会导致IDE在伪终端中运行程序。请尝试在命令行上运行它。