ZIP आर्काइविंग और कम्प्रेशन के लिए उपयोग किए जाने वाले सबसे लोकप्रिय फ़ाइल फॉर्मेट्स में से एक है। यह MSDOS और PC के दिनों से उपयोग में है और प्रसिद्ध PKZIP एप्लिकेशन द्वारा उपयोग किया गया है।
पायथन की स्टैंडर्ड लाइब्रेरी में zipfile मॉड्यूल ZIP आर्काइव्स बनाने, निकालने, पढ़ने और लिखने के लिए टूल्स की सुविधा प्रदान करने वाली क्लासेस प्रदान करता है।
ZipFile()
यह फ़ंक्शन फ़ाइल पैरामीटर से ZipFile ऑब्जेक्ट लौटाता है जो बिल्ट-इन open() फ़ंक्शन द्वारा बनाया गया स्ट्रिंग या फ़ाइल ऑब्जेक्ट हो सकता है। फ़ंक्शन को मोड पैरामीटर की आवश्यकता होती है जिसका डिफ़ॉल्ट मान 'r' है हालांकि यह आर्काइव को रीड, राइट या अपेंड मोड में खोलने के लिए 'w' या 'a' मान ले सकता है।
आर्काइव डिफ़ॉल्ट रूप से अनकंप्रेस्ड होता है। उपयोग किए जाने वाले कम्प्रेशन एल्गोरिदम के प्रकार को निर्दिष्ट करने के लिए, स्थिरांकों में से एक को कम्प्रेशन पैरामीटर को असाइन करना होगा।
| zipfile.ZIP_STORED | अनकंप्रेस्ड आर्काइव मेंबर के लिए। |
| zipfile.ZIP_DEFLATED | सामान्य ZIP कम्प्रेशन मेथड के लिए। इसके लिए zlib मॉड्यूल की आवश्यकता होती है। |
| zipfile.ZIP_BZIP2 | BZIP2 कम्प्रेशन मेथड के लिए। इसके लिए bz2 मॉड्यूल की आवश्यकता होती है। |
| zipfile.ZIP_LZMA | LZMA कम्प्रेशन मेथड के लिए। इसके लिए lzma मॉड्यूल की आवश्यकता होती है। |
ZipFile ऑब्जेक्ट निम्न मेथड्स का उपयोग करता है:
write()
यह मेथड ZipFile ऑब्जेक्ट द्वारा दर्शाए गए आर्काइव में दी गई फ़ाइल जोड़ता है।
>>> import zipfile
>>> newzip = zipfile.ZipFile('newdir/newzip.zip', 'w')
>>> newzip.write('zen.txt')
>>> newzip.close()
मौजूदा आर्काइव में अतिरिक्त फ़ाइल को अपेंड मोड ('a' मोड के रूप में) में खोलकर जोड़ा जा सकता है।
>>> newzip = zipfile.ZipFile('newdir/newzip.zip', 'a')
>>> newzip.write('zen.txt')
>>> newzip.close()
read()
यह मेथड आर्काइव में किसी विशेष फ़ाइल से डेटा पढ़ता है।
>>> newzip = zipfile.ZipFile('newdir/newzip.zip', 'r')
>>> data = newzip.read('json.txt')
>>> data
b'["Rakesh", {"marks": [50, 60, 70]}]'
printdir()
यह मेथड दिए गए आर्काइव में सभी फ़ाइलों को सूचीबद्ध करता है।
>>> newzip.printdir() File Name Modified Size json.txt 2018-11-27 17:04:40 35 zen.txt 2018-11-25 23:13:44 878
extract()
यह मेथड आर्काइव से निर्दिष्ट फ़ाइल को डिफ़ॉल्ट रूप से करंट डायरेक्टरी में या दूसरे पैरामीटर के रूप में दिए गए में निकालता है।
>>> newzip.extract('json.txt', 'newdir')
'newdir\\json.txt'
extractall()
यह मेथड आर्काइव में सभी फ़ाइलों को डिफ़ॉल्ट रूप से करंट डायरेक्टरी में निकालता है। यदि आवश्यक हो तो वैकल्पिक डायरेक्टरी को पैरामीटर के रूप में निर्दिष्ट करें।
>>> newzip.extractall('newdir')
getinfo()
यह मेथड दी गई फ़ाइल से संबंधित ZipInfo ऑब्जेक्ट लौटाता है। ZipInfo ऑब्जेक्ट फ़ाइल की विभिन्न मेटाडेटा जानकारी रखता है।
निम्न कोड आर्काइव से 'zen.txt' का ZipInfo ऑब्जेक्ट प्राप्त करता है और इससे फ़ाइलनाम, आकार और दिनांक-समय जानकारी प्राप्त करता है।
>>> inf = newzip.getinfo('zen.txt')
>>> inf.filename, inf.file_size, inf.date_time
('zen.txt', 878, (2018, 11, 25, 23, 13, 45))
infolist()
यह मेथड आर्काइव में सभी फ़ाइलों के ZipInfo ऑब्जेक्ट्स की सूची लौटाता है।
>>> newzip.infolist() [, ]
जैसा कि पहले उल्लेख किया गया है, ZIP आर्काइव बनाते समय लागू किए जाने वाले कम्प्रेशन एल्गोरिदम को कम्प्रेशन पैरामीटर में निर्दिष्ट किया जाता है। निम्न कोड में, ZIP_DEFLATED स्थिरांक zlib कम्प्रेशन का उपयोग करके आर्काइव बनाता है।
>>> zipobj = zipfile.ZipFile('txtzip.zip', mode='w', compression=zipfile.ZIP_DEFLATED)
>>> files = glob.glob("*.txt")
>>> for file in files:
... zipobj.write(file)
...
>>> zipobj.close()
namelist()
ZipFile ऑब्जेक्ट का यह मेथड आर्काइव में सभी फ़ाइलों की सूची लौटाता है।
>>> zipobj = zipfile.ZipFile('txtzip.zip', mode='r')
>>> zipobj.namelist()
['a!.txt', 'data().txt', 'dict.txt', 'json.txt', 'LICENSE.txt', 'lines.txt', 'msg.txt', 'NEWS.txt', 'test.txt/', 'zen.txt', 'zen1.txt', 'zenbak.txt']
setpassword()
यह मेथड पासवर्ड पैरामीटर सेट करता है जिसे आर्काइव निकालते समय प्रदान किया जाना चाहिए।
PyZipFile()
zipfile मॉड्यूल में यह फ़ंक्शन PyZipFile ऑब्जेक्ट लौटाता है। PyZipFile ऑब्जेक्ट .py एक्सटेंशन वाली फ़ाइलों को समाहित करने वाला मॉड्यूल बना सकता है। इस आर्काइव को sys.path एनवायरनमेंट वेरिएबल में जोड़ा जा सकता है ताकि मॉड्यूल को zipimport मॉड्यूल का उपयोग करके इम्पोर्ट किया जा सके।
writepy() मेथड .py फ़ाइल को संबंधित .pyc फ़ाइल में कंपाइल करने के बाद आर्काइव में जोड़ता है।
files = glob.glob("*.py")
>>> pyzipobj = zipfile.PyZipFile('pyfiles/pyzip.zip', mode='w', compression=zipfile.ZIP_LZMA)
>>> for file in files:
... pyzipobj.writepy(file)
...
>>> pyzipobj.close()
इस लेख में zipfile मॉड्यूल में क्लासेस और फ़ंक्शन्स पर चर्चा की गई है।