termios — Управление терминалом в стиле POSIX
Этот модуль предоставляет интерфейс к вызовам POSIX для управления вводом-выводом терминала. Для полного описания этих вызовов см. страницу руководства Unix termios(3). Он доступен только для тех версий Unix, которые поддерживают управление вводом-выводом терминала в стиле POSIX termios, настроенное во время установки.
Доступность: Unix.
Все функции в этом модуле принимают дескриптор файла 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 определяет, когда атрибуты меняются:-
termios.TCSANOW Изменить атрибуты немедленно.
-
termios.TCSADRAIN Изменить атрибуты после передачи всего очереди вывода.
-
termios.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для перезапуска ввода.
-
termios.tcgetwinsize(fd) Возвращает кортеж
(ws_row, ws_col), содержащий размер окна терминала для дескриптора файла fd. Требуетtermios.TIOCGWINSZилиtermios.TIOCGSIZE.Введено в версии 3.11.
-
termios.tcsetwinsize(fd, winsize) Устанавливает размер окна терминала для дескриптора файла fd из winsize, который является кортежем из двух элементов
(ws_row, ws_col), подобным возвращаемомуtcgetwinsize(). Требуется по крайней мере одна из пар (termios.TIOCGWINSZ,termios.TIOCSWINSZ); (termios.TIOCGSIZE,termios.TIOCSSIZE) должна быть определена.Введено в версии 3.11.
См. также
-
Moduletty Вспомогательные функции для общих операций управления терминалом.
Пример
Вот функция, которая запрашивает пароль с выключенным отображением. Обратите внимание на технику, использующую отдельный вызов 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–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/termios.html