termios
— POSIX стиль управления tty¶
Модуль обеспечивает интерфейс для вызовов POSIX для управления tty I/O. Полное описание этих вызовов см. termios(3) странице руководства Unix. Он доступен только для версий Unix, поддерживающих управление POSIX termios стиль tty I/O, настроенное во время установки.
Все функции этого модуля принимают файловый дескриптор 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()
вызова и try
…
finally
инструкция, чтобы старые атрибуты были восстановлены, независимо
от того, что произойдет:
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