在Python中屏蔽密码输入有问题

时间:2016-12-15 09:31:35

标签: python passwords getpass

我正在使用Python。我正在创建一个脚本,用户必须在终端中输入密码。

我已经使用getpass模块在本网站上找到了解决方案。

new_password=getpass.getpass(prompt="Type new password: ")

问题是我收到警告并且密码输入也会显示。

Warning (from warnings module):
  File "C:\Python34\lib\getpass.py", line 101
    return fallback_getpass(prompt, stream)
GetPassWarning: Can not control echo on the terminal.
Warning: Password input may be echoed.

2 个答案:

答案 0 :(得分:0)

使用带有此代码的普通终端:

import getpass
new_password=getpass.getpass(prompt="Type new password: ")
print(new_password)

可以正常工作,但如果我们尝试使用IDLE,我们会收到您在问题中公开的错误。

现在,如果我们查看文档here,您会看到这是预期的,它说:

  

注意如果从IDLE内部调用getpass,则可以输入   您从而不是空闲窗口启动IDLE的终端   本身。

答案 1 :(得分:0)

使用命令提示符作为管理员来运行此程序。

原因是因为stdin,stdout和stderr连接到/ dev / tty或其他PTY兼容设备的系统环境。

IDLE REPL不符合此要求。

如果您使用的是Windows操作系统或new_password=getpass.getpass(prompt="Type new password: ")用于Linux发行版,请将new_password=getpass.getpass("Type new password: ")更改为new_password=getpass.getpass("Type new password: ",none)

这对您有帮助:

import getpass
pw=getpass.getpass("Enter Your Password Here: ")
if (pw=="password"):
    print ("You are Welcome...")
else:
    print ("Sorry! Your are not allowed.")

根据Python文档:

getpass.getpass([prompt[, stream]])

提示用户输入密码而不回显。使用字符串提示提示用户,默认为“密码:'”。在Unix上,提示符被写入类文件对象流。 stream默认为控制终端(/ dev / tty)或者如果sys.stderr不可用(在Windows上忽略此参数)

在版本2.5中更改:添加了流参数。

注意:如果你从IDLE中调用getpass,输入可以在你启动IDLE的终端而不是空闲窗口本身完成。