如何使用getpass()隐藏输入的用户密码

时间:2017-11-07 20:47:04

标签: python

我正在尝试创建一个检查用户密码强度的小程序。当提示用户输入密码时,我希望输入显示为星号或点而不是文本输入。有没有办法隐藏这个输入。

我使用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

2 个答案:

答案 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在伪终端中运行程序。请尝试在命令行上运行它。