2016-12-15 106 views
0

我正在使用Python。我正在制作一个脚本,用户必须在终端中输入密码。在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. 
+0

widows使用'getpass.win_getpass()'来使用它。 – Ja8zyjits

+0

不幸的是没有帮助 –

+0

你使用空闲或Windows终端? – Ja8zyjits

回答

0

使用普通的终端与此代码:

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

将工作正常的,但如果我们尝试同样的闲置,我们会得到你已经在你的问题暴露了错误。现在

,如果我们看一下文档here你会看到这样做的目的,它说:

注意如果从IDLE内调用getpass,输入可在 做你推出的终端IDLE而不是空闲窗口 本身。

0

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

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

IDLE REPL不符合此要求。

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

这将帮助你肯定的:

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]])

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

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

说明:如果您从IDLE内部调用getpass,则输入可能会在您启动IDLE的终端中完成,而不是在空闲窗口本身中完成。