Computer >> Máy Tính >  >> Lập trình >> Python

Điều khiển TTY kiểu POSIX bằng Python

Mô-đun termios cung cấp giao diện với POSIX để kiểm soát tty I / O. Nó chỉ có sẵn cho hệ thống Unix.

Để sử dụng mô-đun termios, chúng ta nên nhập nó bằng cách sử dụng -

import termios

Tất cả các phương thức trong mô-đun này, lấy bộ mô tả tệp làm đối số. Có một số mô-đun của mô-đun thuật ngữ, đây là -

Phương thức termios.tcgetattr (fd)

Phương thức này trả về một danh sách các thuộc tính tty cho bộ mô tả tệp đã cho. Các thuộc tính là iflag, oflag, cflag, lflag, ispeed, ospeed, cc.

Phương thức termios.tcsetattr (fd, when, thuộc tính)

Phương thức này được sử dụng để đặt thuộc tính từ danh sách các thuộc tính. Đối số thứ hai xác định thời điểm thay đổi thuộc tính. Có một số hằng số cho phần khi. Đây là -

Sr.No. Khi nào thuộc tính &ý nghĩa
1

TCSANOW

Thay đổi thuộc tính ngay lập tức

2

TCSADRAIN

Thay đổi thuộc tính sau khi truyền tất cả đầu ra được xếp hàng đợi

3

TCSAFLUSH

Thay đổi thuộc tính sau khi truyền tất cả đầu ra đã xếp hàng đợi và hủy tất cả đầu vào đã xếp hàng.

Phương thức termios.tcsendbreak (fd, thời lượng)

Nó gửi một dấu ngắt trên bộ mô tả tệp. Khi thời lượng bằng 0, nó sẽ ngắt quãng trong 0,25-0,5 giây.

Phương thức termios.tcdrain (fd)

Phương thức này được sử dụng để đợi cho đến khi tất cả đầu ra được ghi vào bộ mô tả tệp.

Phương thức termios.tcflush (fd, hàng đợi)

Phương pháp này được sử dụng để loại bỏ dữ liệu hàng đợi trên fd. Bộ chọn hàng đợi ở đó để chỉ định hàng đợi nào, nó sẽ được thực hiện. TCIFLUSH được sử dụng cho hàng đợi đầu vào và TCOFLUSH cho hàng đợi đầu ra. và TCIOFLUSH cho cả hai.

Mã mẫu

import termios, sys
def get_password(prompt= "Enter Password: "):
   file_desc = sys.stdin.fileno()
   old_pass = termios.tcgetattr(file_desc)
   new_pass = termios.tcgetattr(file_desc)
   new_pass[3] & = ~termios.ECHO
   try:
      termios.tcsetattr(file_desc, termios.TCSADRAIN, new_pass)
      password = input(prompt)
   finally:
      termios.tcsetattr(file_desc, termios.TCSADRAIN, old_pass)
   return password

Đầu ra

$ python3 example.py
Enter Password:
Entered Password: my_password