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