【发布时间】:2017-11-07 20:47:04
【问题描述】:
我正在尝试制作一个检查用户密码强度的小程序。当提示用户输入密码时,我希望输入显示为星号或圆点,而不是文本输入。有没有办法隐藏这个输入。
我使用 getpass 尝试隐藏输入但没有成功。
from getpass import getpass
passwd = getpass('Please enter your password')
这给了我以下警告信息:
警告(来自警告模块): 文件“C:\Program Files (x86)\Python36-32\lib\getpass.py”,第 100 行 返回 fallback_getpass(提示,流) GetPassWarning:无法控制终端上的回显。 警告:密码输入可能会被回显。 请输入您的密码:this_is_my_password
密码是在行上输入的,但不是用星号,而是用原始字符。
由于程序会检查密码的强度,我需要一些不将密码保存为星号而是保存为原始字符的东西。
除此之外,如果用户执行操作,还有任何方法可以显示用户密码。我正在考虑使用按钮,但这是 Python 中的一个区域,我对此没有信心,所以我可以使用特定键以另一种方式进行编程。
项目的 Sudo 代码。
userPass = hidden(input("Please enter your password "))
if showPassword selected:
show the password
else:
move on with the rest of the program
【问题讨论】:
-
这个问题可能会回答你的问题stackoverflow.com/questions/35805078/…
-
这不是错误,而是警告。区别之一是警告信息丰富,但不具有破坏性。程序在发出警告后不会停止运行。似乎你所拥有的仍然可以工作;继续戳它。
-
你在什么环境下运行这个程序?不管是什么,它都缺少
getpass()用来隐藏字符回显的一些功能。如果您从某种 IDE 内部运行代码,请尝试直接从命令行运行它。 -
我可以使用 pyHook、pythoncom、sys 和 pysignal 模块制作自定义输入函数,你喜欢吗?
-
@jasonharper 仍然有同样的问题。我在 3.6.2 IDE 中运行它。我尝试在 shell 中运行它并出现相同的警告消息。
标签: python