使用Python的POSIX样式TTY控件
termios模块为ttyI/O控制提供了到POSIX的接口。它仅适用于Unix系统。
要使用termios模块,我们应该使用-导入它
import termios
此模块中的所有方法均以文件描述符作为参数。termios模块中有一些模块,它们是-
方法termios.tcgetattr(fd)
此方法返回给定文件描述符的tty属性列表。这些属性是iflag,oflag,cflag,lflag,ispeed,ospeed,cc。
方法termios.tcsetattr(fd,when,attribute)
此方法用于从属性列表中设置属性。第二个参数确定何时更改属性。when部分有一些常量。这些是-
萨诺
立即更改属性
TCSADRAIN
传输所有排队的输出后更改属性
TCSAFLUSH
传输所有排队的输出后更改属性,并丢弃所有排队的输入。
方法termios.tcsendbreak(fd,持续时间)
它在文件描述符上发送一个中断。当持续时间为零时,它将发送0.25-0.5秒的间隔。
方法termios.tcdrain(fd)
此方法用于等待所有输出写入文件描述符。
方法termios.tcflush(fd,queue)
此方法用于丢弃fd上的队列数据。队列选择器在那里指定将在哪个队列上执行。TCIFLUSH用于输入队列,TCOFLUSH用于输出队列。和TCIOFLUSH两者。
范例程式码
import termios, sys def get_password(prompt= "Enter Password: "): file_desc = sys.stdin.fileno() old_pass = termios.tcgetattr(file_desc) new_pass = termios.tcgetattr(file_desc) new_pass[3] & = ~termios.ECHO try: termios.tcsetattr(file_desc, termios.TCSADRAIN, new_pass) password = input(prompt) finally: termios.tcsetattr(file_desc, termios.TCSADRAIN, old_pass) return password
输出结果
$ python3 example.py Enter Password: Entered Password: my_password