Python 逐字符读取而不打印

Python Read Character by Character without printing

我是 python 的新手,我们遇到了一个有趣的情况。

我们想从标准输入中读取一个字符,存储该字符,然后显示另一个字符。

示例:用户输入'c',代码预计保存'c'并打印'v'(即时) 尽管 getpass.getpass 保存了输入,但它什么也不打印。 我在 mac.

上使用 Python 2.7 运行

您正在寻找的是 "disable echo" 在终端(又名 TTY)中。有了这些关键字后,搜索解决方案就会变得容易得多。这是一个:

How to turn console echo back on after tty.setcbreak()

基本上,要禁用 "echoing" 用户在屏幕上的输入,请执行以下操作:

import sys
import termios
import tty

old_settings = termios.tcgetattr(sys.stdin)
tty.setcbreak(sys.stdin.fileno())

之后,您可以使用常规函数从 stdin 读取并显示任何您想要的内容。然后重新启用终端回显:

termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)

请注意,以上假设您正在使用类 Unix 系统。