termios — Управление терминалом в стиле POSIX
Этот модуль предоставляет интерфейс к вызовам POSIX для управления вводом-выводом терминала. Полное описание этих вызовов см. в справочной странице Unix termios(3). Он доступен только для версий Unix, поддерживающих управление вводом-выводом терминала в стиле POSIX termios, настроенное при установке.
Все функции в этом модуле принимают дескриптор файла fd в качестве первого аргумента. Это может быть целое число дескриптор файла, например, возвращаемое sys.stdin.fileno(), или объект файла объект файла, например, сам sys.stdin.
Этот модуль также определяет все необходимые константы для работы с функциями; они имеют такое же имя, как и их аналоги в C. Для получения дополнительной информации об использовании этих интерфейсов управления терминалом обратитесь к документации вашей системы.
Модуль определяет следующие функции:
-
termios.tcgetattr(fd) -
Возвращает список, содержащий атрибуты терминала для дескриптора файла fd следующим образом:
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc], где cc — список специальных символов терминала (каждый — строка длиной 1, за исключением элементов с индексамиVMINиVTIME, которые являются целыми числами, когда эти поля определены). Интерпретация флагов и скоростей, а также индексация в массиве cc должны осуществляться с использованием символических констант, определенных в модулеtermios.
-
termios.tcsetattr(fd, when, attributes) -
Устанавливает атрибуты терминала для дескриптора файла fd из списка attributes, который похож на список, возвращаемый
tcgetattr(). Аргумент when определяет момент изменения атрибутов:TCSANOWдля немедленного изменения,TCSADRAINдля изменения после передачи всех данных в очереди вывода, илиTCSAFLUSHдля изменения после передачи всех данных в очереди вывода и удаления всех данных в очереди ввода.
-
termios.tcsendbreak(fd, duration) -
Отправляет сигнал сброса на дескриптор файла fd. Значение 0 для 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 -
Функции для удобного выполнения общих операций управления терминалом.
35.6.1. Пример
Вот функция, которая запрашивает пароль с отключенным отображением. Обратите внимание на технику использования отдельного вызова 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
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/termios.html