termios — управление tty в стиле POSIX
Этот модуль предоставляет интерфейс к вызовам POSIX для управления вводом-выводом tty. Полное описание этих вызовов см. на странице руководства Unix termios(3). Модуль доступен только в тех версиях Unix, которые поддерживают управление вводом-выводом tty в стиле POSIX termios, настроенное при установке.
Доступность: Unix.
Все функции этого модуля принимают файловый дескриптор fd в качестве первого аргумента. Это может быть целочисленный файловый дескриптор, например возвращаемый sys.stdin.fileno(), или файловый объект, например сам 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 из списка 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. Параметр queue указывает, какую очередь выбрать:
TCIFLUSHдля очереди входных данных,TCOFLUSHдля очереди выходных данных илиTCIOFLUSHдля обеих очередей.
-
termios.tcflow(fd, action) -
Приостанавливает или возобновляет ввод либо вывод для файлового дескриптора fd. Аргумент action может иметь значение
TCOOFFдля приостановки вывода,TCOONдля возобновления вывода,TCIOFFдля приостановки ввода илиTCIONдля возобновления ввода.
-
termios.tcgetwinsize(fd) -
Возвращает кортеж
(ws_row, ws_col), содержащий размер окна tty для файлового дескриптора fd. Требуетсяtermios.TIOCGWINSZилиtermios.TIOCGSIZE.Добавлено в версии 3.11.
-
termios.tcsetwinsize(fd, winsize) -
Устанавливает размер окна tty для файлового дескриптора fd из winsize — кортежа из двух элементов
(ws_row, ws_col), аналогичного возвращаемому функциейtcgetwinsize(). Требуется, чтобы была определена хотя бы одна из пар (termios.TIOCGWINSZ,termios.TIOCSWINSZ); (termios.TIOCGSIZE,termios.TIOCSSIZE).Добавлено в версии 3.11.
См. также
-
Moduletty -
Вспомогательные функции для стандартных операций управления терминалом.
Пример
Ниже приведена функция, которая запрашивает пароль с отключённым эхом. Обратите внимание на приём с отдельным вызовом 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 = input(prompt)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return passwd
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/termios.html