Spec-Zone.ru › Python 3.12

termios — Управление терминалом в стиле POSIX

Этот модуль предоставляет интерфейс к вызовам 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)

Отправить разрыв по дескриптору файла fd. Нулевое значение duration отправляет разрыв на 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), содержащий размер окна терминала для дескриптора файла 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.

См. также

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