Документация Python неофициальный перевод

termios.md

183 строк · 6.5 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.1/library/termios.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 33.6. `termios` – управление tty в стиле POSIX89*Платформы:* Unix1011Этот модуль предоставляет интерфейс к вызовам POSIX для управления вводом/выводом tty. Для полного описания этих вызовов обратитесь к страницам руководства POSIX или Unix. Он доступен только на тех версиях Unix, которые поддерживают управление tty в стиле POSIX *termios* (и то только если был настроен при установке).1213Все функции в этом модуле принимают файловый дескриптор *fd* в качестве первого аргумента. Это может быть целочисленный файловый дескриптор, например возвращаемый `sys.stdin.fileno()`, или [*файловый объект*](https://python-all.ru/3.1/glossary.html#term-file-object), например сам `sys.stdin`.1415Этот модуль также определяет все константы, необходимые для работы с предоставленными функциями; их имена совпадают с соответствующими константами в C. За дополнительной информацией по использованию этих интерфейсов управления терминалом обратитесь к системной документации.1617Модуль определяет следующие функции:1819#### `termios.tcgetattr(fd)`2021Возвращает список, содержащий атрибуты tty для файлового дескриптора2223*fd*2425, следующим образом:2627`[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]`2829, где3031*cc*3233– это список специальных символов tty (каждый – строка длиной 1, за исключением элементов с индексами3435`VMIN`3637и3839`VTIME`4041, которые являются целыми числами, если эти поля определены). Интерпретация флагов и скоростей, а также индексация в массиве4243*cc*4445должна выполняться с помощью символических констант, определённых в модуле4647`termios`4849.5051#### `termios.tcsetattr(fd, when, attributes)`5253Устанавливает атрибуты tty для файлового дескриптора5455*fd*5657из списка5859*attributes*6061, который имеет формат, возвращаемый функцией6263[`tcgetattr()`](https://python-all.ru/3.1/library/termios.html#termios.tcgetattr)6465. Аргумент6667*when*6869определяет, когда будут изменены атрибуты:7071`TCSANOW`7273– немедленно,7475`TCSADRAIN`7677– после передачи всех поставленных в очередь выходных данных, или7879`TCSAFLUSH`8081– после передачи всех поставленных в очередь выходных данных и сброса всех поставленных в очередь входных данных.8283#### `termios.tcsendbreak(fd, duration)`8485Посылает сигнал break на файловый дескриптор8687*fd*8889. Нулевое значение9091*duration*9293посылает break длительностью 0,25–0,5 секунды; ненулевое9495*duration*9697имеет системно-зависимое значение.9899#### `termios.tcdrain(fd)`100101Ожидать, пока весь вывод, записанный в файловый дескриптор102103*fd*104105, не будет передан.106107#### `termios.tcflush(fd, queue)`108109Сбрасывает поставленные в очередь данные для файлового дескриптора110111*fd*112113. Селектор114115*очередь*116117указывает, какая очередь:118119`TCIFLUSH`120121– для входной очереди,122123`TCOFLUSH`124125– для выходной очереди, или126127`TCIOFLUSH`128129– для обеих очередей.130131#### `termios.tcflow(fd, action)`132133Приостанавливает или возобновляет ввод или вывод для файлового дескриптора134135*fd*136137. Аргумент138139*action*140141может быть142143`TCOOFF`144145для приостановки вывода,146147`TCOON`148149для возобновления вывода,150151`TCIOFF`152153для приостановки ввода или154155`TCION`156157для возобновления ввода.158159> **См. также**160>161> **Модуль [`tty`](https://python-all.ru/3.1/library/tty.html#module-tty)**162>163> Вспомогательные функции для типовых операций управления терминалом.164165## 33.6.1. Пример166167Вот функция, которая запрашивает пароль с отключённым эхом. Обратите внимание на приём: используется отдельный вызов [`tcgetattr()`](https://python-all.ru/3.1/library/termios.html#termios.tcgetattr) и конструкция [`try`](https://python-all.ru/3.1/reference/compound_stmts.html#try) ... [`finally`](https://python-all.ru/3.1/reference/compound_stmts.html#finally), чтобы старые атрибуты tty были точно восстановлены независимо от того, что произойдёт:168169```python170def getpass(prompt="Password: "):171    import termios, sys172    fd = sys.stdin.fileno()173    old = termios.tcgetattr(fd)174    new = termios.tcgetattr(fd)175    new[3] = new[3] & ~termios.ECHO          # локальные флаги176    try:177        termios.tcsetattr(fd, termios.TCSADRAIN, new)178        passwd = input(prompt)179    finally:180        termios.tcsetattr(fd, termios.TCSADRAIN, old)181    return passwd182```183