zlib मॉड्यूल Zlib कम्प्रेशन लाइब्रेरी (https://www.zlib.net) का Python कार्यान्वयन प्रदान करता है जो GNU प्रोजेक्ट का हिस्सा है।
यह लेख zlib मॉड्यूल में परिभाषित महत्वपूर्ण फ़ंक्शन्स पर चर्चा करता है।
compress()
यह फ़ंक्शन decompress() फ़ंक्शन के साथ इस मॉड्यूल का प्राथमिक इंटरफ़ेस है। यह फ़ंक्शन पैरामीटर के रूप में दिए गए डेटा को कम्प्रेस करके बाइट ऑब्जेक्ट लौटाता है। फ़ंक्शन का एक और पैरामीटर level होता है जो कम्प्रेशन की सीमा को नियंत्रित करता है। यह 0 से 9 के बीच का इंटीजर है। सबसे कम मान 0 नो कम्प्रेशन के लिए है और 9 बेस्ट कम्प्रेशन के लिए। कम्प्रेशन लेवल जितना अधिक होगा, कम्प्रेस्ड बाइट ऑब्जेक्ट की लंबाई उतनी ही अधिक होगी।
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() फ़ंक्शन मूल Python स्ट्रिंग प्राप्त करता है:
>>> 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'