কম্পিউটার

Python (lzma) ব্যবহার করে LZMA অ্যালগরিদম ব্যবহার করে কম্প্রেশন


লেম্পেল-জিভ-মার্কভ চেইন অ্যালগরিদম (LZMA) অন্যান্য কম্প্রেশন অ্যালগরিদমের তুলনায় একটি উচ্চ কম্প্রেশন অনুপাত সমন্বিত একটি অভিধান কম্প্রেশন স্কিম ব্যবহার করে ক্ষতিহীন ডেটা কম্প্রেশন করে। পাইথনের lzma মডিউল LZMA অ্যালগরিদমের সাথে ডেটা কম্প্রেশন এবং ডিকম্প্রেশনের জন্য ক্লাস এবং সুবিধার ফাংশন নিয়ে গঠিত।

যদিও এই মডিউলের কার্যকারিতা bz2 মডিউলের মতো, তবে LZMAFile ক্লাস BZ2File ক্লাসের তুলনায় থ্রেড নিরাপদ নয়৷

এখানে আবার, lzma মডিউলে open() ফাংশন হল lzma-কম্প্রেসড ফাইল অবজেক্ট খোলার সবচেয়ে সহজ উপায়।

খোলা()

এই ফাংশনটি একটি LZMA-সংকুচিত ফাইল খোলে এবং একটি ফাইল অবজেক্ট রিটার্ন করে। ফাংশনের জন্য দুটি প্রধান পরামিতি প্রয়োজন - ফাইলের নাম এবং মোড। মোড প্যারামিটারটি ডিফল্টরূপে "rb" তবে নিম্নলিখিত মানগুলির যেকোনও নিতে পারে

বাইনারী মোড - "r", "rb", "w", "wb", "x", "xb", "a" বা "ab"টেক্সট মোড - "rt", "wt", "xt" ", অথবা "এ"

কম্প্রেস()

এই ফাংশন LZMA অ্যালগরিদম ব্যবহার করে প্রদত্ত ডেটা সংকুচিত করে এবং একটি বাইট অবজেক্ট প্রদান করে। এই ফাংশনটি ঐচ্ছিকভাবে একটি ফর্ম্যাট আর্গুমেন্ট থাকতে পারে যা ধারক বিন্যাস নির্ধারণ করে। সম্ভাব্য মানগুলি হল FORMAT_XZ (ডিফল্ট) এবং FORMAT_ALONE৷

ডিকম্প্রেস()

এই ফাংশন ডেটা ডিকম্প্রেস করে এবং আনকম্প্রেসড বাইট অবজেক্ট ফেরত দেয়।

উপরের ফাংশনগুলি নিম্নলিখিত উদাহরণগুলিতে ব্যবহৃত হয়। ফাইলে LZMA সংকুচিত ডেটা লিখতে

>>> lzma আমদানি করুন>>> ডেটা =b "TutorialsPoint-এ স্বাগতম">>> f =lzma.open("test.xz","wb")>>>f.write(data)>>> f.close()

বর্তমান কাজের ডিরেক্টরিতে একটি 'test.xz' ফাইল তৈরি করা হবে। এই ফাইল থেকে আনকমপ্রেসড ডেটা আনতে নিম্নলিখিত কোড ব্যবহার করুন৷

>>> lzma আমদানি করুন>>> f =lzma.open("test.xz","rb")>>> data =f.read()>>> datab'TutorialsPoint-এ স্বাগতম'

Lzma মডিউলের অবজেক্ট ওরিয়েন্টেড API ব্যবহার করে কম্প্রেশন করতে, আমাদের LZMAFile ক্লাস ব্যবহার করতে হবে

LZMAFile()

এটি LZMAFile ক্লাসের কনস্ট্রাক্টর। এটি নির্দিষ্ট করা ফাইল এবং মোড প্রয়োজন. 'w' বা 'wb' মোড সহ অবজেক্ট এটির জন্য write() পদ্ধতি উপলব্ধ করে।

লিখুন()

এই পদ্ধতিটি প্রদত্ত ডেটা সংকুচিত করে এবং এটির নীচে ফাইলে লিখতে পারে।

>>> data =b'TutorialsPoint-এ স্বাগতম'>>>obj =lzma.LZMAFile("test.xz", mode="wb")>>>obj.write(data)>>>obj.close ()

সংকুচিত ফাইলটি পড়া হয় এবং মোড='rb' প্যারামিটার দিয়ে তৈরি LZMAFile অবজেক্টের read() পদ্ধতির মাধ্যমে আনকম্প্রেস করা ডেটা পুনরুদ্ধার করা হয়।

পড়ুন()

এই পদ্ধতিটি কম্প্রেস করা ফাইল থেকে ডেটা পড়ে এবং আনকমপ্রেসড ডেটা ফেরত দেয়।

>>>obj =lzma.LZMAFile("test.xz", mode="rb")>>> data=obj.read()>>> datab'TutorialsPoint-এ স্বাগতম'

LZMA অ্যালগরিদম ইতিমধ্যে খোলা ফাইলেও সংকুচিত ডেটা লেখার অনুমতি দেয়। নিম্নলিখিত উদাহরণে, 'test.txt' সাধারণত 'wb' মোডে খোলা হয় (বিল্ট-ইন ওপেন() ফাংশন ব্যবহার করে) এবং এতে কিছু পাঠ্য লেখা হয়। পরে, একই ফাইল সংকুচিত ডেটা লিখতে ব্যবহৃত হয়।

>>> f =open("test.txt","wb")>>>f.write(b"Hello world")>>>>fp =lzma.open(f,"wb")>>>fp.write(b"Python-এ স্বাগতম")>>>f.write(b"ধন্যবাদ")>>>f.close()>>>fp.flush()>>>fp.close() 

উপরের কোডটি কার্যকর করা হলে, বর্তমান ডিরেক্টরিতে 'test.txt' উপস্থিত হয়। এতে নিচের মত কম্প্রেসড এবং আনকম্প্রেসড ডেটার মিশ্রণ রয়েছে

হ্যালো worldý7zXZ æÖ´F!t/å£আপনাকে ধন্যবাদ

bz2 মডিউলের মতো, lzma মডিউলেও ক্রমবর্ধমান কম্প্রেসার এবং ডিকম্প্রেসার ক্লাস রয়েছে।

LZMACompressor()

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

কম্প্রেস()

এই পদ্ধতিটি প্রদত্ত ডেটা সংকুচিত করে এবং বাইট অবজেক্ট প্রদান করে

ফ্লাশ()

এই পদ্ধতিটি বাফার খালি করে এবং একটি বাইট বস্তু ফেরত দেয়।

নিম্নলিখিত উদাহরণ ক্রমবর্ধমান কম্প্রেসার অবজেক্ট ব্যবহার করে একটি তালিকা বস্তুকে সংকুচিত করে।

>>> data =[b'Hello World', b'How are you?', b'Welcome to Python']>>> obj =lzma.LZMACompressor()>>> বিন্দাতা =[]>>> ডেটাতে i এর জন্য:bindata.append(obj.compress(i))>>> bindata.append(obj.flush())>>> bindata[b'\xfd7zXZ\x00\x00\x04\xe6\xd6\xb4F \x02\x00!\x01\x16\x00\x00\x00t/\xe5\xa3', b'', b'', b"\x01\x00'Hello World কেমন আছেন? Python\x00\xf5\ এ স্বাগতম। xc6\xc1d|\xf3\x8ey\x00\x01@(\xd4RJ\xe5\x1f\xb6\xf3}\x01\x00\x00\x00\x00\x04YZ"]

উপরের কোডটি মূল তালিকার প্রতিটি আইটেমের সংকুচিত বাইট উপস্থাপনার তালিকা হিসাবে বিন্ডাটা তৈরি করে। LZMADecompressor ব্যবহার করে অসংকুচিত ডেটা পুনরুদ্ধার করতে অবজেক্ট, নিম্নলিখিত বিবৃতি ব্যবহার করুন

>>> obj =lzma.LZMADecompressor()>>> binstr =b''.join(bindata)>>> obj.decompress(binstr)b'হ্যালো ওয়ার্ল্ড কেমন আছেন? পাইথনে স্বাগতম'

এই নিবন্ধে lzma মডিউলের ক্লাস এবং ফাংশন উদাহরণ সহ ব্যাখ্যা করা হয়েছে।


  1. পাইথনে পাইডক মডিউল ব্যবহার করে ডকুমেন্টেশন জেনারেশন

  2. পাইথন - বোকেহ ব্যবহার করে ডেটা ভিজ্যুয়ালাইজেশন

  3. পাইথনে গড় শিফট অ্যালগরিদম প্রয়োগ করুন

  4. পাইথন ব্যবহার করে বেস64 ডেটা এনকোডিং