termios
— Управление тити в стиле POSIX¶
Этот модуль предоставляет интерфейс к вызовам POSIX для управления вводом/выводом tty. Полное описание этих вызовов приведено на странице руководства по Unix termios(3). Он доступен только для тех версий Unix, которые поддерживают POSIX termios стиль управления вводом/выводом tty, настроенный во время установки.
Все функции этого модуля принимают в качестве первого аргумента дескриптор файла fd. Это может быть целочисленный дескриптор файла, например, возвращаемый sys.stdin.fileno()
, или file object, например, сам 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. Нулевая длительность посылает прерывание на 0,25–0,5 секунды; ненулевая длительность имеет системно-зависимое значение.
-
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
для обеспечения точного восстановления старых атрибутов 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