【问题标题】:Getpass input Python 3Getpass 输入 Python 3
【发布时间】:2015-12-21 13:28:19
【问题描述】:

我正在尝试创建密码输入。我知道getpass.getpass,但是当我将它放入空闲状态时,它会出现一个错误,提示“密码可能被回显”。

我的代码:

import getpass

p = getpass.getpass()

print("You entered:") + p

这可能不起作用,因为我使用的是 Python 3.2.3

【问题讨论】:

  • print("You entered:" + p)print("You entered:" + str(p))
  • 我真的很喜欢“它想到了一个错误”这句话。
  • @AvinashRaj: getpass.getpass() 返回一个字符串,所以不需要str()。但是我认为 OP 询问为什么 getpass.getpass()password may be echoed
  • 我尝试了你的代码(带有更正的print()),它没有给我一个错误。

标签: python


【解决方案1】:

来自getpass 文档:

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

还有:

如果无回显输入不可用,getpass() 回退到打印警告消息以流式传输并从sys.stdin 读取并发出GetPassWarning

因此,您的 IDLE 环境中可能没有echo free input 可用(例如,您没有从 shell 启动它)。

【讨论】:

  • 关于exception getpass.GetPassWarning当密码输入可能被回显时发出的 UserWarning 子类。
  • @KevinGuan:我只是不想引用文档页面中几乎所有的句子,但是是的;)
【解决方案2】:

如果您在使用 getpass() 时遇到问题 [并且很多人这样做],请尝试使用 easygui 版本的密码框。 0.96。不过,我强烈建议不要使用 0.98。它在运行代码时产生了一个错误,与 0.96 相反,它运行得非常好,在框中只显示了星号,正如所愿。

python setup.py install

from easygui import passwordbox
password = passwordbox("PASSWORD:")

【讨论】:

  • 鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。
  • 但我做到了!但是,我因复制其他帖子中的答案而被责骂,并被管理员删除。我的回答只有 3 句话,所以“包括基本部分”实际上意味着引用全部内容,这导致帖子首先被删除……我不明白。当我写下我如何解决问题时,它被删除了。当我留下一个解决方案的链接时,它被认为是一个低质量的答案。
猜你喜欢
  • 1970-01-01
  • 2013-02-15
  • 2016-12-24
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 2015-03-11
相关资源
最近更新 更多