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 系统。
我是 python 的新手,我们遇到了一个有趣的情况。
我们想从标准输入中读取一个字符,存储该字符,然后显示另一个字符。
示例:用户输入'c',代码预计保存'c'并打印'v'(即时)
尽管 getpass.getpass
保存了输入,但它什么也不打印。
我在 mac.
您正在寻找的是 "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 系统。