Содержание страницы
termios – управление терминалом в стиле POSIX¶termios – POSIX style tty control
Этот модуль предоставляет интерфейс к системным вызовам POSIX для управления вводом-выводом на терминале. Полное описание этих вызовов можно найти на странице руководства Unix termios(3). Модуль доступен только в тех версиях Unix, которые поддерживают управление терминалом в стиле POSIX termios, настроенное при установке.
Доступность: Unix.
Все функции этого модуля принимают файловый дескриптор fd в качестве первого аргумента. Это может быть целочисленный файловый дескриптор, например, возвращаемый функцией sys.stdin.fileno(), или файловый объект, например, сам sys.stdin.
Этот модуль также определяет все константы, необходимые для работы с предоставленными функциями; их имена совпадают с соответствующими константами в C. За дополнительной информацией по использованию этих интерфейсов управления терминалом обратитесь к системной документации.
Модуль определяет следующие функции:
- termios.tcgetattr(fd)¶
Возвращает список, содержащий атрибуты терминала для файлового дескриптора fd, в следующем виде:
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc], где cc – это список специальных символов терминала (каждый – строка длиной 1, за исключением элементов с индексамиVMINиVTIME, которые являются целыми числами, если эти поля определены). Интерпретация флагов и скоростей, а также индексация массива cc должны выполняться с помощью символьных констант, определённых в модулеtermios.
- termios.tcsetattr(fd, when, attributes)¶
Устанавливает атрибуты терминала для файлового дескриптора fd из списка attributes, аналогичного возвращаемому функцией
tcgetattr(). Аргумент when определяет, когда должны быть изменены атрибуты:- termios.TCSANOW¶
Изменить атрибуты немедленно.
- termios.TCSADRAIN¶
Изменить атрибуты после передачи всего поставленного в очередь вывода.
- termios.TCSAFLUSH¶
Изменить атрибуты после передачи всего поставленного в очередь вывода и удаления всего поставленного в очередь ввода.
- termios.tcsendbreak(fd, duration)¶
Отправить сигнал break на файловый дескриптор fd. Нулевое значение duration отправляет break на 0.25–0.5 секунды; ненулевое значение duration имеет смысл, зависящий от системы.
- termios.tcdrain(fd)¶
Ожидать, пока весь вывод, записанный в файловый дескриптор fd, не будет передан.
- termios.tcflush(fd, queue)¶
Отбрасывает поставленные в очередь данные на файловом дескрипторе fd. Селектор очередь указывает, какая очередь:
TCIFLUSH– очередь ввода,TCOFLUSH– очередь вывода, илиTCIOFLUSH– обе очереди.
- termios.tcflow(fd, action)¶
Приостанавливает или возобновляет ввод или вывод на файловом дескрипторе fd. Аргумент action может принимать значения:
TCOOFF– приостановить вывод,TCOON– возобновить вывод,TCIOFF– приостановить ввод,TCION– возобновить ввод.
- termios.tcgetwinsize(fd)¶
Возвращает кортеж
(ws_row, ws_col), содержащий размер окна терминала для файлового дескриптора fd. Требуетtermios.TIOCGWINSZилиtermios.TIOCGSIZE.Новое в версии 3.11.
- termios.tcsetwinsize(fd, winsize)¶
Устанавливает размер окна терминала для файлового дескриптора fd из winsize, который представляет собой кортеж из двух элементов
(ws_row, ws_col), аналогичный возвращаемому функциейtcgetwinsize(). Требуется определение хотя бы одной из пар (termios.TIOCGWINSZ,termios.TIOCSWINSZ); (termios.TIOCGSIZE,termios.TIOCSSIZE).Новое в версии 3.11.
См. также
- Модуль
tty Вспомогательные функции для типовых операций управления терминалом.
Пример¶Example
Ниже приведена функция, которая запрашивает пароль с отключённым эхом. Обратите внимание на технику с отдельным вызовом tcgetattr() и инструкцией try … finally, чтобы гарантировать точное восстановление старых атрибутов терминала независимо от возникших ситуаций:
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 # локальные флаги
try:
termios.tcsetattr(fd, termios.TCSADRAIN, new)
passwd = input(prompt)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return passwd