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


Модуль предоставляет интерфейс для POSIX вызовов для управления вводом/выводом tty. Полное описание данных вызовов см. на странице руководства Unix termios(3). Он доступен только для тех версий Unix, которые поддерживают управление вводом-выводом в стиле POSIX termios, настроенное во время установки.

Все функции в данном модуле принимают файловый дескриптор 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 определяет, когда атрибуты будут изменены: TCSANOW для немедленного изменения, TCSADRAIN для изменения после передачи всех выходных данных в очереди или 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 для перезапуска ввода.

См.также

Модуль tty
Удобные функции для обычных операций управления терминалом.

Пример

Вот функция, запрашивающая пароль с отключенным эхом. Обратите внимание на использующий отдельный вызов tcgetattr() метод и оператор tryfinally, чтобы гарантировать точное восстановление старых 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