GZip एप्लिकेशन फ़ाइलों के कम्प्रेशन और डीकम्प्रेशन के लिए उपयोग किया जाता है। यह GNU प्रोजेक्ट का हिस्सा है। Python का gzip मॉड्यूल GZip एप्लिकेशन का इंटरफ़ेस है। gzip डेटा कम्प्रेशन एल्गोरिदम स्वयं zlib मॉड्यूल पर आधारित है।
gzip मॉड्यूल में GzipFile क्लास और इसके मेथड्स की परिभाषा होती है। इसमें सुविधा फ़ंक्शन open(), compress() और decompress() भी शामिल हैं।
कम्प्रेशन और डीकम्प्रेशन प्राप्त करने का सबसे आसान तरीका उपरोक्त फ़ंक्शन्स का उपयोग करना है।
open() फ़ंक्शन
यह फ़ंक्शन gzip-कम्प्रेस्ड फ़ाइल को बाइनरी या टेक्स्ट मोड में खोलता है और एक फ़ाइल-जैसा ऑब्जेक्ट लौटाता है, जो भौतिक फ़ाइल, स्ट्रिंग या बाइट ऑब्जेक्ट हो सकता है। डिफ़ॉल्ट रूप से, फ़ाइल 'rb' मोड में खुलती है यानी बाइनरी डेटा पढ़ने के लिए, हालांकि इस फ़ंक्शन का mode पैरामीटर नीचे सूचीबद्ध अन्य मोड ले सकता है।
बाइनरी मोड: 'r', 'rb', 'a', 'ab', 'w', 'wb', 'x', 'xb'
टेक्स्ट मोड: 'rt', 'at', 'wt', 'xt'
यह फ़ंक्शन कम्प्रेशन लेवल भी डिफाइन करता है जिसका मान 0 से 9 के बीच स्वीकार्य है। जब फ़ाइल टेक्स्ट मोड में खोली जाती है, तो GzipFile ऑब्जेक्ट TextIOWrapper ऑब्जेक्ट में लपेटा जाता है।
compress()
यह फ़ंक्शन आर्गुमेंट के रूप में दिए गए डेटा पर कम्प्रेशन लागू करता है और कम्प्रेस्ड बाइट ऑब्जेक्ट लौटाता है। डिफ़ॉल्ट कम्प्रेशन लेवल 9 है।
decompress()
यह फ़ंक्शन बाइट ऑब्जेक्ट को डीकम्प्रेस करता है और अनकम्प्रेस्ड डेटा लौटाता है।
निम्न उदाहरण कम्प्रेस्ड डेटा लिखकर एक gzip फ़ाइल बनाता है:
>>> import gzip
>>> data = b'Python - Batteries included'
>>> with gzip.open("test.txt.gz", "wb") as f:
... f.write(data)
यह करंट डायरेक्टरी में "test.txt.gz" फ़ाइल बनाएगा। इस gzip आर्काइव में "test.txt" होता है जिसे आप किसी अनजिपिंग यूटिलिटी से वेरिफाई कर सकते हैं।
इस कम्प्रेस्ड फ़ाइल को प्रोग्रामेटिक रूप से पढ़ने के लिए:
>>> with gzip.open("test.txt.gz", "rb") as f:
... data = f.read()
>>> data
b'Python - Batteries included'
किसी मौजूदा फ़ाइल को gzip आर्काइव में कम्प्रेस करने के लिए, उसमें टेक्स्ट पढ़ें और उसे बाइटएरे में कन्वर्ट करें। यह बाइटएरे ऑब्जेक्ट फिर gzip फ़ाइल में लिखा जाता है। नीचे उदाहरण में, 'zen.txt' फ़ाइल करंट डायरेक्टरी में मौजूद मानी गई है।
>>> fp = open("zen.txt", "rb")
>>> data = fp.read()
>>> bindata = bytearray(data)
>>> with gzip.open("zen.txt.gz", "wb") as f:
... f.write(bindata)
gzip आर्काइव से अनकम्प्रेस्ड फ़ाइल प्राप्त करने के लिए:
>>> fp = open("zen1.txt", "wb")
>>> with gzip.open("zen.txt.gz", "rb") as f:
... bindata = f.read()
>>> fp.write(bindata)
>>> fp.close()
उपरोक्त कोड करंट डायरेक्टरी में 'zen1.txt' बनाएगा जिसमें 'zen.txt' जैसा ही डेटा होगा।
इन सुविधा फ़ंक्शन्स के अलावा, gzip मॉड्यूल में GzipFile क्लास भी है जो compress() और decompress() मेथड्स डिफाइन करती है। इस क्लास का कंस्ट्रक्टर file, mode और compressionlevel आर्गुमेंट्स लेता है जिनका अर्थ ऊपर जैसा ही है।
जब mode पैरामीटर 'w', 'wb' या 'wt' दिया जाता है, तो GzipFile ऑब्जेक्ट दिए गए डेटा को कम्प्रेस करके gzip फ़ाइल में लिखने के लिए write() मेथड प्रदान करता है।
>>> f = gzip.GzipFile("testnew.txt.gz", "wb")
>>> data = b'Python - Batteries included'
>>> f.write(data)
>>> f.close()
यह testnew.txt.gz फ़ाइल बनाएगा। आप इसे किसी यूटिलिटी से अनजिप करके देख सकते हैं कि इसमें testnew.txt है जिसमें 'Python – Batteries included' टेक्स्ट है।
GzipFile ऑब्जेक्ट का उपयोग करके gzip फ़ाइल को डीकम्प्रेस करने के लिए, इसे 'rb' मोड में बनाएं और read() मेथड से अनकम्प्रेस्ड डेटा पढ़ें:
>>> f = gzip.GzipFile("testnew.txt.gz", "rb")
>>> data = f.read()
>>> data
b'Python - Batteries included'
इस लेख में हमने सीखा कि Python के gzip मॉड्यूल द्वारा gzip लाइब्रेरी को कैसे लागू किया जा सकता है।