termios
— POSIX style tty control¶
Цей модуль надає інтерфейс для викликів POSIX для керування tty I/O. Щоб отримати повний опис цих викликів, перегляньте termios(3) сторінку посібника Unix. Він доступний лише для тих версій Unix, які підтримують POSIX termios стиль tty I/O control, налаштований під час встановлення.
Наявність: Unix.
Усі функції в цьому модулі приймають файловий дескриптор fd як перший аргумент. Це може бути цілочисельний дескриптор файлу, наприклад, повернутий sys.stdin.fileno()
, або file object, наприклад 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)¶
Set the tty attributes for file descriptor fd from the attributes, which is a list like the one returned by
tcgetattr()
. The when argument determines when the attributes are changed:- termios.TCSANOW¶
Change attributes immediately.
- termios.TCSADRAIN¶
Change attributes after transmitting all queued output.
- termios.TCSAFLUSH¶
Change attributes after transmitting all queued output and discarding all queued input.
- termios.tcsendbreak(fd, duration)¶
Надіслати перерву на файловий дескриптор fd. Нульова тривалість посилає перерву на 0,25–0,5 секунди; ненульова тривалість має системно-залежне значення.
- 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)¶
Return a tuple
(ws_row, ws_col)
containing the tty window size for file descriptor fd. Requirestermios.TIOCGWINSZ
ortermios.TIOCGSIZE
.Нове в версії 3.11.
- termios.tcsetwinsize(fd, winsize)¶
Set the tty window size for file descriptor fd from winsize, which is a two-item tuple
(ws_row, ws_col)
like the one returned bytcgetwinsize()
. Requires at least one of the pairs (termios.TIOCGWINSZ
,termios.TIOCSWINSZ
); (termios.TIOCGSIZE
,termios.TIOCSSIZE
) to be defined.Нове в версії 3.11.
Дивись також
- Модуль
tty
Функції зручності для звичайних операцій керування терміналом.
приклад¶
Ось функція, яка запитує пароль із вимкненим відлунням. Зверніть увагу на техніку використання окремого виклику 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