Spec-Zone.ru › Python 3.13

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.

См. также

Module tty

Вспомогательные функции для распространённых операций управления терминалом.

Пример

Ниже приведена функция, которая запрашивает пароль с отключённым отображением вводимых символов. Обратите внимание на приём с отдельным вызовом 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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/termios.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API