Nota
¡Ayúdanos a traducir la documentación oficial de Python al Español! Puedes encontrar más información en Como contribuir. Ayuda a acercar Python a más personas de habla hispana.
termios
—Control tty estilo POSIX¶
Este módulo proporciona una interfaz para las llamadas POSIX para el control de E/S (entrada/salida) tty. Para obtener una descripción completa de estas llamadas, consulte termios (3) Página de manual de Unix. Solo está disponible para aquellas versiones de Unix que admitan el control de E/S tty estilo POSIX termios configurado durante la instalación.
Todas las funciones de este módulo toman un descriptor de archivo fd como primer argumento. Puede ser un descriptor de archivo entero, como el que retorna sys.stdin.fileno()
, o un file object, como el propio sys.stdin
.
Este módulo también define todas las constantes necesarias para trabajar con las funciones proporcionadas aquí; tienen el mismo nombre que sus contrapartes en C. Consulte la documentación de su sistema para obtener más información sobre el uso de estas interfaces de control de terminal.
El módulo define las siguientes funciones:
- termios.tcgetattr(fd)¶
Retorna una lista que contiene los atributos tty para el descriptor de archivo fd, como se muestra a continuación:
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]
donde cc es una lista de los caracteres especiales tty (cada una es una cadena de longitud 1, excepto los elementos con índicesVMIN
andVTIME
, que son números enteros cuando se definen estos campos). La interpretación de las banderas y las velocidades, así como la indexación en el arreglo cc, debe realizarse utilizando las constantes simbólicas definidas en el módulotermios
.
- termios.tcsetattr(fd, when, attributes)¶
Establezca los atributos tty para el descriptor de archivo fd de los atributos, que es una lista como la retornada por
tcgetattr()
. El argumento when determina cuándo se cambian los atributos:TCSANOW
para cambiar inmediatamente,TCSADRAIN
para cambiar después de transmitir toda la salida en cola, oTCSAFLUSH
para cambiar después de transmitir toda la salida en cola y descartar toda la entrada en cola.
- termios.tcsendbreak(fd, duration)¶
Envíe una pausa en el descriptor de archivo fd. Una duración cero envía una pausa de 0.25 a 0.5 segundos; una duración distinta de cero tiene un significado dependiente del sistema.
- termios.tcdrain(fd)¶
Espere hasta que se haya transmitido toda la salida escrita en el descriptor de archivo fd.
- termios.tcflush(fd, queue)¶
Descartar datos en cola en el descriptor de archivo fd. El selector queue especifica qué cola:
TCIFLUSH
para la cola de entrada,TCOFLUSH
para la cola de salida, oTCIOFLUSH
para ambas colas.
- termios.tcflow(fd, action)¶
Suspender o reanudar la entrada o salida en el descriptor de archivo fd. El argumento action puede ser
TCOOFF
para suspender la salida,TCOON
para reiniciar la salida,TCIOFF
para suspender la entrada, oTCION
para reiniciar la entrada.
- termios.tcgetwinsize(fd)¶
Devuelve una tupla
(ws_row, ws_col)
que contiene el tamaño de la ventana tty para el descriptor de archivo fd. Requieretermios.TIOCGWINSZ
otermios.TIOCGSIZE
.Nuevo en la versión 3.11.
- termios.tcsetwinsize(fd, winsize)¶
Establezca el tamaño de la ventana tty para el descriptor de archivo fd de winsize, que es un tupla de dos elementos
(ws_row, ws_col)
como la devuelta portcgetwinsize()
. Requiere que al menos uno de los pares (termios.TIOCGWINSZ
,termios.TIOCSWINSZ
); (termios.TIOCGSIZE
,termios.TIOCSSIZE
) por definir.Nuevo en la versión 3.11.
Ver también
- Módulo
tty
Funciones de conveniencia para operaciones comunes de control de terminal.
Ejemplo¶
Aquí hay una función que solicita una contraseña con el eco desactivado. Tenga en cuenta la técnica utilizando una llamada separada tcgetattr()
y una sentencia try
… finally
para asegurarse de que los antiguos atributos tty se restauran exactamente sin importar lo que suceda:
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