【问题标题】:Can i get console input without echo in python?我可以在python中获得没有回声的控制台输入吗?
【发布时间】:2011-06-04 17:55:54
【问题描述】:

我可以在 python 中获得没有 echo 的控制台输入吗?

【问题讨论】:

  • 控制台 inputecho?不计算。需要更多细节。

标签: python


【解决方案1】:

使用getpass:

>>> from getpass import getpass
>>> getpass()
Password:
'secret'

【讨论】:

  • 我希望像 getch() 那样逐个字符但跨平台
  • @tm1rbrt 在这种情况下,curses 可能是您的最佳选择。
  • 我没试过,不过你也可以导入readline模块。 getpass 的文档没有提到 readline,但 readline 改变了 raw_input() 的行为,例如。
【解决方案2】:

也许'console' 模块是你唯一的选择(它有点像 Unix 的 curses 模块的“分支”),但是我没有在它的主页上看到任何与终端回显禁用相关的内容,你可以尝试深入研究它自己一个人。

【讨论】:

  • 目前还不是跨平台——它只支持 Windows 到 Windows 2000。
【解决方案3】:

还有另一种解决方案(至少在 unix 系统上,我不知道这是否适用于 Windows)。只需关闭控制台输出并使用 raw_input:

os.system("stty -echo")
password = raw_input('Enter Password:')
os.system("stty echo")
print "\n"

【讨论】:

  • 请注意,stty -echo 将持续存在,直到调用 stty echo。这包括在 python 会话之外持续存在,如果raw_input 导致 python 退出。
猜你喜欢
  • 2018-05-19
  • 2020-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
相关资源
最近更新 更多