Spec-Zone.ru › Python 3.14

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 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/library/termios.html

Spec-Zone.ru

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