Module termios cung cấp giao diện đến POSIX cho điều khiển I/O tty. Chỉ khả dụng trên hệ thống Unix.
Để dùng module termios, nên nhập bằng:
import termios
Tất cả phương thức trong module này nhận file descriptor làm đối số. Một số phương thức của termios:
Phương thức termios.tcgetattr(fd)
Trả về danh sách các thuộc tính tty cho file descriptor cho trước. Các thuộc tính là: iflag, oflag, cflag, lflag, ispeed, ospeed, cc.
Phương thức termios.tcsetattr(fd, when, attributes)
Thiết lập thuộc tính từ danh sách thuộc tính. Đối số thứ hai xác định khi nào thuộc tính sẽ thay đổi. Có một số hằng số cho phần when:
| STT | Thuộc tính When & Ý nghĩa |
|---|---|
| 1 | TCSANOW – Thay đổi thuộc tính ngay lập tức |
| 2 | TCSADRAIN – Thay đổi sau khi truyền xong toàn bộ output đang chờ |
| 3 | TCSAFLUSH – Thay đổi sau khi truyền xong output chờ, và hủy bỏ toàn bộ input chờ. |
Phương thức termios.tcsendbreak(fd, duration)
Gửi một tín hiệu break (ngắt) trên file descriptor. Khi duration bằng 0, gửi break trong 0.25-0.5 giây.
Phương thức termios.tcdrain(fd)
Chờ cho đến khi toàn bộ output được ghi vào file descriptor.
Phương thức termios.tcflush(fd, queue)
Loại bỏ dữ liệu hàng đợi (queue) trên fd. Bộ chọn queue chỉ định hàng đợi nào sẽ thực hiện. TCIFLUSH cho input queue, TCOFLUSH cho output queue, và TCIOFLUSH cho cả hai.
Mã ví dụ
import termios, sys
def get_password(prompt="Nhập mật khẩu: "):
file_desc = sys.stdin.fileno()
old_pass = termios.tcgetattr(file_desc)
new_pass = termios.tcgetattr(file_desc)
new_pass[3] &= ~termios.ECHO # Tắt echo
try:
termios.tcsetattr(file_desc, termios.TCSADRAIN, new_pass)
password = input(prompt)
finally:
termios.tcsetattr(file_desc, termios.TCSADRAIN, old_pass)
return password
Kết quả
$ python3 example.py Nhập mật khẩu: Mật khẩu đã nhập: my_password