लेम्पेल–ज़िव–मार्कोव श्रृंखला एल्गोरिथम (LZMA) अन्य संपीड़न एल्गोरिदम की तुलना में उच्च संपीड़न अनुपात की विशेषता वाले शब्दकोश संपीड़न योजना का उपयोग करके दोषरहित डेटा संपीड़न करता है। पायथन के lzma मॉड्यूल में LZMA एल्गोरिथम के साथ डेटा के संपीड़न और विघटन के लिए कक्षाएं और सुविधा कार्य शामिल हैं।
हालांकि इस मॉड्यूल में कार्यक्षमता bz2 मॉड्यूल के समान है, लेकिन LZMAFile वर्ग BZ2File वर्ग की तुलना में थ्रेड सुरक्षित नहीं है।
यहाँ फिर से, lzma मॉड्यूल में open() फ़ंक्शन lzma-संपीड़ित फ़ाइल ऑब्जेक्ट को खोलने का सबसे आसान तरीका है।
खुला ()
यह फ़ंक्शन एक LZMA-संपीड़ित फ़ाइल खोलता है और एक फ़ाइल ऑब्जेक्ट देता है। फ़ंक्शन को दो मुख्य मापदंडों की आवश्यकता होती है - फ़ाइल का नाम और मोड। मोड पैरामीटर डिफ़ॉल्ट रूप से "आरबी" है, लेकिन निम्न में से कोई भी मान ले सकता है
binary mode - "r", "rb", "w", "wb", "x", "xb", "a" or "ab" text mode - "rt", "wt", "xt", or "at"
संपीड़ित करें()
यह फ़ंक्शन LZMA एल्गोरिथम का उपयोग करके दिए गए डेटा को संपीड़ित करता है और एक बाइट ऑब्जेक्ट देता है। यह फ़ंक्शन वैकल्पिक रूप से एक प्रारूप तर्क को हवा दे सकता है जो कंटेनर प्रारूप को तय करता है। संभावित मान हैं FORMAT_XZ (डिफ़ॉल्ट) और FORMAT_ALONE।
डीकंप्रेस()
यह फ़ंक्शन डेटा को डीकंप्रेस करता है और असम्पीडित बाइट ऑब्जेक्ट देता है।
उपरोक्त कार्यों का उपयोग निम्नलिखित उदाहरणों में किया जाता है। फाइल करने के लिए LZMA संपीड़ित डेटा लिखने के लिए
>>> import lzma >>> data = b"Welcome to TutorialsPoint" >>> f = lzma.open("test.xz","wb") >>>f.write(data) >>>f.close()
वर्तमान कार्यशील निर्देशिका में एक 'test.xz' फ़ाइल बनाई जाएगी। इस फ़ाइल से असम्पीडित डेटा लाने के लिए निम्नलिखित कोड का उपयोग करें।
>>> import lzma >>> f = lzma.open("test.xz","rb") >>> data = f.read() >>> data b'Welcome to TutorialsPoint'
lzma मॉड्यूल के ऑब्जेक्ट ओरिएंटेड एपीआई का उपयोग करके संपीड़न करने के लिए, हमें LZMAFile वर्ग का उपयोग करना होगा
LZMAFile()
यह LZMAFile वर्ग के लिए निर्माता है। इसे निर्दिष्ट करने के लिए फ़ाइल और मोड की आवश्यकता होती है। 'w' या 'wb' मोड वाला ऑब्जेक्ट इसके लिए राइट () मेथड उपलब्ध कराता है।
लिखें ()
यह विधि दिए गए डेटा को संपीड़ित करती है और उसके नीचे फ़ाइल में लिखती है।
>>> data = b'Welcome to TutorialsPoint' >>>obj = lzma.LZMAFile("test.xz", mode="wb") >>>obj.write(data) >>>obj.close()
संपीड़ित फ़ाइल पढ़ी जाती है और असम्पीडित डेटा को मोड ='आरबी' पैरामीटर के साथ बनाए गए LZMAFile ऑब्जेक्ट की रीड () विधि द्वारा पुनर्प्राप्त किया जाता है।
पढ़ें ()
यह विधि संपीड़ित फ़ाइल से डेटा पढ़ती है और असम्पीडित डेटा लौटाती है।
>>>obj = lzma.LZMAFile("test.xz", mode="rb") >>> data=obj.read() >>> data b'Welcome to TutorialsPoint'
LZMA एल्गोरिथ्म पहले से खुली हुई फ़ाइल में भी संपीड़ित डेटा लिखने की अनुमति देता है। निम्नलिखित उदाहरण में, 'test.txt' को 'wb' मोड में सामान्य रूप से (बिल्ट-इन ओपन () फ़ंक्शन का उपयोग करके) खोला जाता है और इसमें कुछ टेक्स्ट लिखा जाता है। बाद में, संपीड़ित डेटा लिखने के लिए उसी फ़ाइल का उपयोग किया जाता है।
>>> f = open("test.txt","wb") >>>f.write(b"Hello world") >>>fp = lzma.open(f,"wb") >>>fp.write(b"Welcome to Python") >>>f.write(b"Thank you") >>>f.close() >>>fp.flush() >>>fp.close()
जब उपरोक्त कोड निष्पादित किया जाता है, तो 'test.txt' वर्तमान निर्देशिका में दिखाई देता है। इसमें नीचे के रूप में संपीड़ित और असम्पीडित डेटा का मिश्रण है
Hello worldý7zXZ æÖ´F!t/å£Thank you
जैसा कि bz2 मॉड्यूल में होता है, lzma मॉड्यूल में भी इंक्रीमेंटल कंप्रेसर और डीकंप्रेसर क्लास होते हैं।
LZMACompressor()
यह एक कंस्ट्रक्टर है जो इंक्रीमेंटल कंप्रेसर ऑब्जेक्ट देता है। एकाधिक विखंडू को व्यक्तिगत रूप से संपीड़ित किया जा सकता है और उनका संक्षिप्त डेटा फ़ाइल में लिखा जाता है
संपीड़ित करें()
यह विधि दिए गए डेटा को संपीड़ित करती है और बाइट ऑब्जेक्ट लौटाती है
फ्लश ()
यह विधि बफ़र को खाली करती है और एक बाइट ऑब्जेक्ट लौटाती है।
निम्नलिखित उदाहरण वृद्धिशील कंप्रेसर ऑब्जेक्ट का उपयोग करके सूची ऑब्जेक्ट को संपीड़ित करता है।
>>> data = [b'Hello World', b'How are you?', b'welcome to Python'] >>> obj = lzma.LZMACompressor() >>> bindata = [] >>> for i in data: 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 WorldHow are you?welcome to 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'Hello WorldHow are you?welcome to Python'
इस लेख में lzma मॉड्यूल में कक्षाओं और कार्यों को उदाहरणों के साथ समझाया गया है।