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

পাইথনে bzip2 কম্প্রেশন (bz2) এর জন্য সমর্থন

bzip2 হলো একটি ওপেন-সোর্স অ্যালগরিদম যা ফাইল কম্প্রেস ও ডিকম্প্রেস করার জন্য ব্যবহৃত হয়। পাইথনের bz2 মডিউল bzip2 অ্যালগরিদমকে প্রোগ্রামেটিকভাবে প্রয়োগ করার কার্যকারিতা প্রদান করে।

open() ফাংশন

এই ফাংশনটি এই মডিউলের প্রाथমিক ইন্টারফেস। এটি একটি bzip2 কম্প্রেসড ফাইল খুলে একটি ফাইল অবজেক্ট ফেরত দেয়। ফাইলটি বাইনারি বা টেক্সট মোডে পড়া/লেখার অনুমতিতে खोला যেতে পারে। কম্প্রেশন লেভেল আর্গুমেন্ট (১ থেকে ৯) অনুযায়ী ফাংশনটি কম্প্রেশন সম্পাদন করে।

write() মেথড

যখন ফাইলটি 'w' বা 'wb' মোডে खोला হয়, তখন এই মেথডটি ফাইল অবজেক্টের জন্য উপলব্ধ হয়। বাইনারি মোডে, এটি কম্প্রেসড বাইনারি ডেটা ফাইলে লেখে। সাধারণ টেক্সট মোডে, ফাইল অবজেক্টটি TextIOWrapper অবজেক্টে র‍্যাপ হয়ে এনকোডিং সম্পাদন করে।

read() মেথড − যখন ফাইলটি পড়ার মোডে खोला হয়, এই ফাংশনটি এটি পড়ে অনকম্প্রেসড ডেটা ফেরত দেয়।

নিচের কোডটি একটি bzip2 ফাইলে কম্প্রেসড ডেটা লিখে:

>>> import bz2
>>> f = bz2.open("test.bz2", "wb")
>>> data = b'Welcome to TutorialsPoint'
>>> f.write(data)
>>> f.close()

এটি করেন্ট ডিরেক্টরিতে test.bz2 ফাইল তৈরি করবে। যেকোনো আনজিপ টুল এটি খুললে ভিতরে 'test' নামক একটি ফাইল দেখাবে। এই test.bz2 ফাইল থেকে অনকম্প্রেসড ডেটা পড়ার জন্য নিচের কোডটি ব্যবহার করুন:

>>> f = bz2.open("test.bz2", "rb")
>>> data = f.read()
>>> data
b'Welcome to TutorialsPoint'

bz2 মডিউল BZ2File ক্লাসও সংজ্ঞায়িত করে। এর অবজেক্ট কনস্ট্রাক্টরের মোড প্যারামিটারের উপর ভিত্তি করে কম্প্রেসর ও ডিকম্প্রেসর উভয় роли পালন করে।

BZ2File() কনস্ট্রাক্টর

open() ফাংশনের মতোই এখানেও ফাইল ও মোড প্যারামিটার আবশ্যক। ডিফল্ট কম্প্রেশন লেভেল ৯, যা ১ থেকে ৯ পর্যন্ত হতে পারে।

BZ2Compressor()

এই ফাংশনটি ইনক্রিমেন্টাল কম্প্রেসর ক্লাসের অবজেক্ট ফেরত দেয়। এই ক্লাসের compress() মেথডে প্রতিটি কল কম্প্রেসড ডেটার একটি চাঙ্ক ফেরত দেয়। একাধিক চাঙ্ক একসাথে যুক্ত করে শেষে bzip2 কম্প্রেশন ফাইলে লেখা যায়।

flush() মেথড

এই মেথডটি বাফার খালি করে এবং সেখানে থাকা ডেটার চাঙ্কটি ফেরত দেয় যাতে কম্প্রেসড অবজেক্টের সাথে যুক্ত করা যায়।

BZ2Decompressor()

এই ফাংশনটি ইনক্রিমেন্টাল ডিকম্প্রেসরের অবজেক্ট ফেরত দেয়। পৃথক ডিকম্প্রেসড ডেটা চাঙ্কগুলো ফ্লাশ করা ডেটার সাথে একসাথে যুক্ত হয়ে অনকম্প্রেসড ডেটা গঠন করে।

নিচের উদাহরণটি প্রথমে লিস্টের প্রতিটি আইটেম কম্প্রেস করে সংযুক্ত বাইট অবজেক্টটি ফাইলে লেখে। তারপর BZ2Decompressor অবজেক্ট দিয়ে ডেটা পুনরুদ্ধার করা হয়।

>>> import bz2
>>> data = [b'Hello World', b'How are you?', b'welcome to Python']
>>> obj = bz2.BZ2Compressor()
>>> f = bz2.open("test.bz2", "wb")
>>> d1 = obj.compress(data[0])
>>> d2 = obj.compress(data[1])
>>> d3 = obj.compress(data[2])
>>> d4 = obj.flush()
>>> compressedobj = d1 + d2 + d3 + d4
>>> f.write(compressedobj)
>>> f.close()
>>> obj = bz2.BZ2Decompressor()
>>> f = bz2.open("test.bz2", "rb")
>>> data = f.read()
>>> obj.decompress(data)
b'Hello WorldHow are you?welcome to Python'
  1. পাইথনে ফাইল অবজেক্ট: ফাইল পড়া, লিখা এবং ম্যানেজমেন্টের সম্পূর্ণ গাইড

  2. পাইথনে Base64 ডেটা এনকোডিং (base64 মডিউল)

  3. পিসির জন্য সেরা ৬ টি ফাইল ট্রান্সফার অ্যাপ

  4. উইন্ডোজের জন্য টপ ১৫ ফাইল কমপ্রেশন টুল – ডেটা দক্ষতার সাথে কমপ্রেস ও সংরক্ষণ করুন