termios মডিউল TTY I/O কন্ট্রোলের জন্য POSIX ইন্টারফেস প্রদান করে। এটি শুধু ইউনিক্স সিস্টেমের জন্য উপলব্ধ।
termios মডিউল ব্যবহার করতে হলে, আমাদের এটি ইম্পোর্ট করতে হবে -
import termios
এই মডিউলের সব মেথড ফাইল ডেসক্রিপ্টরকে আর্গুমেন্ট হিসেবে নেয়। termios মডিউলের কিছু মডিউল রয়েছে, এগুলো হলো -
termios.tcgetattr(fd) মেথড
এই মেথড দেওয়া ফাইল ডেসক্রিপ্টরের জন্য TTY অ্যাট্রিবিউটের একটি লিস্ট ফেরত দেয়। অ্যাট্রিবিউটগুলো হলো iflag, oflag, cflag, lflag, ispeed, ospeed, cc।
termios.tcsetattr(fd, when, attributes) মেথড
এই মেথড অ্যাট্রিবিউটের লিস্ট থেকে অ্যাট্রিবিউট সেট করতে ব্যবহৃত হয়। দ্বিতীয় আর্গুমেন্ট নির্ধারণ করে অ্যাট্রিবিউট কখন পরিবর্তন হবে। when সেকশনের জন্য কিছু কনস্ট্যান্ট রয়েছে। এগুলো হলো -
| Sr.No. | When Attribute & Meaning |
|---|---|
| 1 | TCSANOW অ্যাট্রিবিউট অবিলম্বে পরিবর্তন |
| 2 | TCSADRAIN সকল কিউড আউটপুট ট্রান্সমিট হওয়ার পর অ্যাট্রিবিউট পরিবর্তন |
| 3 | TCSAFLUSH সকল কিউড আউটপুট ট্রান্সমিট হওয়ার পর, এবং সকল কিউড ইনপুট ডিসকার্ড করার পর অ্যাট্রিবিউট পরিবর্তন। |
termios.tcsendbreak(fd, duration) মেথড
এটি ফাইল ডেসক্রিপ্টরে একটি ব্রেক পাঠায়। যখন duration শূন্য, তবে এটি ০.২৫-০.৫ সেকেন্ডের জন্য একটি ব্রেক পাঠায়।
termios.tcdrain(fd) মেথড
এই মেথড ফাইল ডেসক্রিপ্টরে লেখা সকল আউটপুট সম্পূর্ণ হওয়া পর্যন্ত অপেক্ষা করতে ব্যবহৃত হয়।
termios.tcflush(fd, queue) মেথড
এই মেথড 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