termios — Управление терминалом в стиле POSIX
Этот модуль предоставляет интерфейс к вызовам POSIX для управления вводом-выводом терминала. Для полного описания этих вызовов см. страницу справки Unix termios(2). Он доступен только для тех версий 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для возобновления ввода.
См. также
-
Moduletty -
Функции удобства для выполнения общих операций управления терминалом.
1. Пример
Вот функция, которая запрашивает пароль с выключенным отображением. Обратите внимание на технику использования отдельного вызова 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 = raw_input(prompt)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return passwd
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/termios.html