termios
---posix样式tty控件¶
该模块为TTY I/O控制的POSIX调用提供接口。有关这些调用的完整描述,请参阅 termios(3) Unix手册页。它只适用于那些支持POSIX的UNIX版本 术语 安装期间配置的样式tty I/O控件。
此模块中的所有函数都采用文件描述符 fd 作为他们的第一个参数。这可以是一个整数文件描述符,例如 sys.stdin.fileno()
,或者 file object ,如 sys.stdin
本身。
此模块还定义了使用此处提供的函数所需的所有常量;这些常量与它们在C中的对应项同名。有关使用这些终端控制接口的更多信息,请参阅系统文档。
该模块定义了以下功能:
- termios.tcgetattr(fd)¶
返回包含文件描述符的tty属性的列表 fd 如下:
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]
在哪里? cc 是TTY特殊字符的列表(每个字符都是长度为1的字符串,带索引的项除外VMIN
和VTIME
,在定义这些字段时是整数)。标志和速度的解释以及 cc 数组必须使用中定义的符号常量termios
模块。
- termios.tcsetattr(fd, when, attributes)¶
设置文件描述符的tty属性 fd 从 属性 ,这是一个类似于返回的列表
tcgetattr()
. 这个 when 参数确定属性何时更改:TCSANOW
立即改变,TCSADRAIN
在传输所有排队的输出后改变,或TCSAFLUSH
在传输所有排队的输出并丢弃所有排队的输入之后进行更改。
- termios.tcsendbreak(fd, duration)¶
发送文件描述符中断 fd . 零度 期间 发送0.25-0.5秒的中断;非零 期间 具有与系统相关的含义。
- termios.tcdrain(fd)¶
等待所有输出写入文件描述符 fd 已传输。
- termios.tcflush(fd, queue)¶
放弃文件描述符上的排队数据 fd . 这个 队列 选择器指定哪个队列:
TCIFLUSH
对于输入队列,TCOFLUSH
对于输出队列,或TCIOFLUSH
对于两个队列。
- termios.tcflow(fd, action)¶
暂停或恢复文件描述符上的输入或输出 fd . 这个 行动 参数可以是
TCOOFF
暂停输出,TCOON
要重新启动输出,TCIOFF
暂停输入,或TCION
重新启动输入。
参见
- 模块
tty
通用终端控制操作的便利功能。
例子¶
这是一个函数,在关闭回音的情况下提示输入密码。注意使用单独的 tcgetattr()
调用与A try
… finally
语句以确保无论发生什么,都能准确还原旧的tty属性:
def getpass(prompt="Password: "):
import termios, sys
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~termios.ECHO # lflags
try:
termios.tcsetattr(fd, termios.TCSADRAIN, new)
passwd = input(prompt)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return passwd