termios — Управление терминалом в стиле POSIX
Этот модуль предоставляет интерфейс к вызовам POSIX для управления вводом-выводом терминала. Для полного описания этих вызовов см. страницу справки 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для возобновления ввода.
См. также
-
Moduletty -
Вспомогательные функции для общих операций управления терминалом.
Пример
Вот функция, которая запрашивает пароль с выключенным отображением. Обратите внимание на технику использования отдельного вызова 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–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/termios.html