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

পাইথনে gzip-সামঞ্জস্যপূর্ণ কম্প্রেশন (zlib মডিউল)

zlib মডিউল Zlib কম্প্রেশন লাইব্রেরির (https://www.zlib.net) পাইথন ইমপ্লিমেন্টেশন প্রদান করে, যা GNU প্রকল্পের একটি অংশ।

এই আর্টিকেলে zlib মডিউলের গুরুত্বপূর্ণ ফাংশনগুলো আলোচনা করা হয়েছে।

compress() ফাংশন

decompress() ফাংশনের সাথে মিলে এটি এই মডিউলের প্রाथমিক ইন্টারফেস। এই ফাংশনটি প্যারামিটার হিসেবে দেওয়া ডেটা কম্প্রেস করে বাইট অবজেক্ট ফেরত দেয়। এর level নামে একটি আরো প্যারামিটার আছে যা কম্প্রেশনের পরিমাণ নিয়ন্ত্রণ করে। এটি ০ থেকে ৯ পর্যন্ত একটি ইন্টিজার। নিম্নতম মান ০ মানে কোনো কম্প্রেশন নেই এবং ৯ মানে সেরা কম্প্রেশন। কম্প্রেশন লেভেল যত বেশি, কম্প্রেসড বাইট অবজেক্টের দৈর্ঘ্য তত বেশি।

decompress() ফাংশন

এই ফাংশনটি compress() ফাংশনের বিপরীত কাজ করে। এটি অনকম্প্রেসড ডেটা পুনরুদ্ধার করে। এই ফাংশনের একটি অপশনাল প্যারামিটার আছে wbits যা ইতিহাস বাফারের আকার এবং হেডার/ট্রেলার ফরম্যাট নিয়ন্ত্রণ করে।

নিচের স্টেটমেন্টটি compress() ফাংশন দিয়ে একটি স্ট্রিং অবজেক্ট কম্প্রেস করে:

>>> import zlib
>>> c = zlib.compress(b'hello python')
>>> c
b'x\x9c\xcbH\xcd\xc9\xc9W(\xa8,\xc9\xc8\xcf\x03\x00\x1e\xf0\x04\xd7'

অপর দিকে decompress() ফাংশনটি মূল পাইথন স্ট্রিংটি ফেরত দেয়:

>>> zlib.decompress(c)
b'hello python'

মডিউলটিতে কম্প্রেশন ও ডিকম্প্রেশনের জন্য দুটি সংশ্লিষ্ট ক্লাসের সংজ্ঞা রয়েছে।

compressobj() − এটি কম্প্রেশন অবজেক্টের কনস্ট্রাক্টর যা ডেটা স্ট্রিম কম্প্রেস করতে ব্যবহৃত হয়। এই অবজেক্টের দুটি গুরুত্বপূর্ণ মেথড:

  • compress() − কম্প্রেসড বাইট অবজেক্ট ফেরত দেয়।
  • flush() − কম্প্রেশন অবজেক্ট স্ট্রিমের সাথে কাজ করে, তাই কিছু কম্প্রেসড ডেটা বাফারে থাকতে পারে। এই মেথডটি বাফার খালি করে।

নিচের উদাহরণটি কম্প্রেশন অবজেক্ট সেট আপ করে এবং compress() মেথডের রিটার্ন ভ্যালুতে ফ্লাশ করা ডেটা যোগ করে একটি কম্প্রেসড ডেটা অবজেক্ট তৈরি করে:

>>> s1 = b'hello python'
>>> c = zlib.compressobj()
>>> s2 = c.compress(s1)
>>> s2 = s2 + c.flush()
>>> s2
b'x\x9c\xcbH\xcd\xc9\xc9W(\xa8,\xc9\xc8\xcf\x03\x00\x1e\xf0\x04\xd7'

decompressobj() − এটি ডিকম্প্রেশন অবজেক্টের কনস্ট্রাক্টর যা স্ট্রিম থেকে বড় ডেটা ডিকম্প্রেস করে। এই অবজেক্ট নিচের মেথডগুলো প্রদান করে:

  • decompress() − এটি অনকম্প্রেসড ডেটা ফেরত দেয়।
  • flush() − এটি বাফার খালি করে।

নিচের কোডটি পূর্বের উদাহরণে তৈরি বাইট অবজেক্ট থেকে অনকম্প্রেসড ডেটা পুনরুদ্ধার করে:

>>> d = zlib.decompressobj()
>>> x = d.decompress(s2)
>>> x = x + d.flush()
>>> x
b'hello python'

zlib মডিউলে দুটি কনস্ট্যান্ট সংজ্ঞায়িত আছে যা ব্যবহৃত zlib লাইব্রেরির ভার্সন ইনফরমেশন দেয়।

>>> zlib.ZLIB_VERSION
'1.2.11'
>>> zlib.ZLIB_RUNTIME_VERSION
'1.2.11'
  1. পাইথনে গার্বেজ কালেকশন: মেমরি ম্যানেজমেন্ট বোঝা

  2. পাইথনে gzip-সামঞ্জস্যপূর্ণ কম্প্রেশন (zlib মডিউল)

  3. পাইথন উইক রেফারেন্স

  4. পাইথনে TimeTuple কী?