โมดูล 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