কম্পিউটার টিউটোরিয়াল

পাইথনে টেক্সট লাইনে র‍্যান্ডম এক্সেস (linecache মডিউল)

পাইথনের স্ট্যান্ডার্ড লাইব্রেরির linecache মডিউলের উদ্দেশ্য হলো যেকোনো টেক্সট ফাইলে র‍্যান্ডম এক্সেস সুবিধা করা, যদিও এই মডিউলটি পাইথনের traceback মডিউল দ্বারা এরর ট্রেস স্ট্যাক জেনারেট করার জন্য ব্যাপকভাবে ব্যবহৃত হয়। পড়ার প্রিটি-প্রিন্টগুলো ক্যাশে-এ রাখা হয় যাতে বারবার লাইন পড়ার সময় সময় বাঁচায়।

এই মডিউলের সবচেয়ে গুরুত্বপূর্ণ ফাংশন হলো getline() যা একটি নির্দিষ্ট লাইন নম্বর দিয়ে দেওয়া ফাইল থেকে পড়ে। ফাংশনগুলো নিচে দেওয়া হলো:

getline(file, x)

এই ফাংশনটি ফাইল থেকে x-তম লাইন ফেরত দেয়। যদি না থাকে তবে খালি স্ট্রিং ফেরত দেবে। ফাইল যদি করেন্ট পাথে না থাকে, ফাংশনটি sys.path-এ থাকা ডিরেক্টরিগুলোতে (মডিউল সার্চ পাথ) সেটা খুঁজে বের করার চেষ্টা করে।

clearcache()

যদি আগের getline() ফাংশনের প্রিটি-প্রিন্ট আর দরকার নাও থাকে, এই ফাংশন দিয়ে ক্যাশে ক্লিয়ার করা যায়।

checkcache()

এই ফাংশনটি চেক করে ক্যাশে বৈধ কিনা। এটি উপযোগী যদি ক্যাশের ফাইলগুলো ডিস্কে পরিবর্তিত হয়ে যাওয়ার সম্ভাবনা থাকে।

lazycache()

module_globals দিয়ে filename-এর জন্য ক্যাশে বীজ বপন করে। মডিউল লোডার সোর্স চাইবে শুধু যখন getlines কল করা হবে, তাত্ক্ষণিক নয়।

getlines()

এই ফাংশনটি ফাইল থেকে লাইনগুলো লিস্ট অবজেক্ট আকারে ফেরত দেয়।

updatecache()

এই ফাংশনটি ক্যাশে এন্ট্রি আপডেট করে এবং লাইনগুলোর একটি লিস্ট ফেরত দেয়।

linecache কার্যকারিতা প্রদর্শনের জন্য, প্রথমে আমরা একটি টেক্সট ফাইল তৈরি করব যা পাইথনের বিখ্যাত Zen of Python (সফটওয়্যার নীতিমালা যা পাইথনের ডিজাইন ফিলোসফি প্রভাবিত করে) সংরক্ষণ করবে। 'import this'-এর আউটপুট নিচের কোড দিয়ে zen.txt-এ রিডাইরেক্ট করা হয়েছে:

import sys, io
zen = io.StringIO()
old_stdout = sys.stdout
sys.stdout = zen
import this
sys.stdout = old_stdout
f = open('zen.txt', 'w')
f.write(zen.getvalue())
f.close()

উপরোক্ত কোড এক্সিকিউট করলে zen.txt করেন্ট ডিরেক্টরিতে তৈরি হবে। আমরা এই টেক্সট ফাইলটি ব্যবহার করে getline() ফাংশন দিয়ে লাইন পড়ব।

ফাইল থেকে ৪র্থ লাইন পড়তে:

>>> linecache.getline('zen.txt', 4)
'Explicit is better than implicit.\n'

লক্ষ্য করুন রিটার্ন স্ট্রিং নিউলাইন ক্যারেক্টার দিয়ে শেষ হয়।

৪ থেকে ১০ নম্বর লাইন দেখাতে, getlines() ফাংশন দ্বারা ফেরত দেওয়া লিস্টে স্লাইস অপারেটর ব্যবহার করুন:

>>> linecache.getlines('zen.txt')[4:10]
['Simple is better than complex.\n',
 'Complex is better than complicated.\n',
 'Flat is better than nested.\n',
 'Sparse is better than dense.\n',
 'Readability counts.\n',
 "Special cases aren't special enough to break the rules.\n"]

এই আর্টিকেলে আমরা পাইথন স্ট্যান্ডার্ড লাইব্রেরির linecache মডিউল সম্পর্কে শিখলাম।

  1. পাইথন Tkinter-এ asksaveasfile() ফাংশন

  2. পাইথন Tkinter-এ askopenfile() ফাংশন ব্যবহার করে ফাইল খোলা

  3. পাইথন প্রোগ্রামে টেক্সট ফাইল পড়া এবং লেখা

  4. পাইথনে issubset() ফাংশন