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 = 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.5/library/termios.html