Spec-Zone.ru › Python 3.12

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

Spec-Zone.ru

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