termios
termios - POSIX风格的tty控件
该模块提供了一个用于tty I / O控制的POSIX调用的接口。有关这些调用的完整说明,请参阅termios(2)
Unix手册页。它仅适用于那些支持在安装期间配置的POSIX termios
风格tty I / O控制的Unix版本。
该模块中的所有函数都将文件描述符fd作为其第一个参数。 这可以是整数文件描述符,如sys.stdin.fileno()返回的文件描述符,也可以是文件对象,如sys.stdin本身。
该模块还定义了使用此处提供的功能所需的所有常量; 这些名称与C中的对应名称相同。有关使用这些终端控制接口的更多信息,请参阅您的系统文档。
该模块定义了以下功能:
termios.tcgetattr(fd)
返回包含文件描述符fd的tty属性的列表,如下所示:[iflag,oflag,cflag,lflag,ispeed,ospeed,cc]其中cc是tty特殊字符的列表(每个长度为1的字符串, 索引为VMIN和VTIME的项目,这些项目在定义这些字段时是整数)。 必须使用termios模块中定义的符号常量来完成cc数组中标志和速度的解释以及索引。
termios.tcsetattr(fd, when, attributes)
从属性设置文件描述符fd的tty属性,这是一个像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
重新启动输入。
扩展内容
Module
tty
常见终端控制操作的便捷功能。
1.例子
这里有一个函数,提示输入关闭回显的密码。请注意使用单独tcgetattr()
调用和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 = raw_input(prompt)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return passwd