โมดูล termios จัดเตรียมอินเทอร์เฟซไปยัง POSIX สำหรับการควบคุม tty I/O ใช้ได้เฉพาะกับระบบ Unix เท่านั้น
ในการใช้โมดูลเทอร์มิโอ เราควรนำเข้าโดยใช้ −
import termios
วิธีการทั้งหมดในโมดูลนี้ ใช้ file descriptor เป็นอาร์กิวเมนต์ มีบางโมดูลของโมดูลเทอร์มิโอ เหล่านี้คือ −
วิธีการ termios.tcgetattr(fd)
เมธอดนี้ส่งคืนรายการแอตทริบิวต์ tty สำหรับ file descriptor ที่กำหนด คุณลักษณะ ได้แก่ iflag, oflag, cflag, lflag, ispeed, ospeed, cc.
วิธีการ termios.tcsetattr(fd เมื่อ คุณลักษณะ)
วิธีนี้ใช้เพื่อตั้งค่าแอตทริบิวต์จากรายการแอตทริบิวต์ อาร์กิวเมนต์ที่สองกำหนดเมื่อแอตทริบิวต์จะถูกเปลี่ยน มีค่าคงที่บางส่วนสำหรับส่วนเมื่อ เหล่านี้คือ −
ซีเนียร์ | เมื่อคุณลักษณะและความหมาย |
---|---|
1 | TCSANOW เปลี่ยนแอตทริบิวต์ทันที |
2 | TCSADRAIN เปลี่ยนแอตทริบิวต์หลังจากส่งสัญญาณออกที่จัดคิวทั้งหมด |
3 | TCSAFLUSH เปลี่ยนแอตทริบิวต์หลังจากส่งเอาต์พุตที่อยู่ในคิวทั้งหมด และยกเลิกอินพุตที่อยู่ในคิวทั้งหมด |
วิธีการ termios.tcsendbreak(fd ระยะเวลา)
มันส่งตัวแบ่งไฟล์อธิบาย เมื่อระยะเวลาเป็นศูนย์ จะส่งช่วงพัก 0.25-0.5 วินาที
วิธีการ termios.tcdrain(fd)
วิธีนี้ใช้เพื่อรอจนกว่าเอาต์พุตทั้งหมดที่เขียนไปยัง file descriptor
วิธีการ termios.tcflush(fd, คิว)
วิธีนี้ใช้ทิ้งข้อมูลคิวใน fd ตัวเลือกคิวอยู่ที่นั่นเพื่อระบุว่าจะดำเนินการกับคิวใด TCIFLUSH ใช้สำหรับอินพุตคิวและ TCOFLUSH สำหรับเอาต์พุตคิว และ TCIOFLUSH สำหรับทั้งคู่
โค้ดตัวอย่าง
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
ผลลัพธ์
$ python3 example.py Enter Password: Entered Password: my_password