ज़िप संग्रह और संपीड़न के लिए उपयोग किए जाने वाले सबसे लोकप्रिय फ़ाइल स्वरूपों में से एक है। यह MSDOS और PC के दिनों से उपयोग में है और प्रसिद्ध PKZIP एप्लिकेशन द्वारा उपयोग किया जाता है।
पायथन के मानक पुस्तकालय में ज़िपफाइल मॉड्यूल ऐसी कक्षाएं प्रदान करता है जो ज़िप अभिलेखागार को बनाने, निकालने, पढ़ने और लिखने के लिए उपकरण की सुविधा प्रदान करता है।
ज़िपफाइल ()
यह फ़ंक्शन एक फ़ाइल पैरामीटर से एक ZipFile ऑब्जेक्ट देता है जो एक स्ट्रिंग या फ़ाइल ऑब्जेक्ट हो सकता है जैसा कि बिल्ट-इन ओपन () फ़ंक्शन द्वारा बनाया गया है। फ़ंक्शन को एक मोड पैरामीटर की आवश्यकता होती है जिसका डिफ़ॉल्ट मान 'r' होता है, हालांकि यह क्रमशः पढ़ने, लिखने या संलग्न मोड में संग्रह को खोलने के लिए 'w' या 'a' मान ले सकता है।
डिफ़ॉल्ट रूप से संग्रह असम्पीडित है। उपयोग किए जाने वाले संपीड़न एल्गोरिदम के प्रकार को निर्दिष्ट करने के लिए, स्थिरांक में से एक को संपीड़न पैरामीटर को असाइन करना होगा।
zipfile.ZIP_STORED | एक असम्पीडित संग्रह सदस्य के लिए। |
zipfile.ZIP_DEFLATED | सामान्य ज़िप संपीड़न विधि के लिए। इसके लिए zlib मॉड्यूल की आवश्यकता है। |
zipfile.ZIP_BZIP2 | BZIP2 संपीड़न विधि के लिए। इसके लिए bz2 मॉड्यूल की आवश्यकता है। |
zipfile.ZIP_LZMA | LZMA संपीड़न विधि के लिए। इसके लिए lzma मॉड्यूल की आवश्यकता है। |
ZipFile ऑब्जेक्ट निम्न विधियों का उपयोग करता है।
लिखें ()
यह विधि ज़िपफाइल ऑब्जेक्ट द्वारा दर्शाए गए संग्रह को फ़ाइल देती है।
>>> zipfile आयात करें>>> newzip=zipfile.ZipFile('newdir/newzip.zip','w')>>> newzip.write('zen.txt')>>> newzip.close()
अतिरिक्त फ़ाइल को पहले से मौजूद संग्रह में परिशिष्ट मोड में खोलकर जोड़ा जा सकता है ('ए' मोड के रूप में)
>>> newzip=zipfile.ZipFile('newdir/newzip.zip','a')>>> newzip.write('zen.txt')>>> newzip.close()
पढ़ें ()
यह विधि संग्रह में किसी विशेष फ़ाइल से डेटा पढ़ती है।
>>> newzip=zipfile.ZipFile('newdir/newzip.zip','r')>>> data=newzip.read('json.txt')>>> datab'["Rakesh", { "अंक":[50, 60, 70]}]'
प्रिंटदिर ()
यह विधि दिए गए संग्रह में सभी फाइलों को सूचीबद्ध करती है।
>>> newzip.printdir()फ़ाइल का नाम संशोधित Sizejson.txt 2018-11-2717:04:40 35zen.txt 2018-11-2523:13:44 878
निकालें ()
यह विधि संग्रह से एक निर्दिष्ट फ़ाइल को डिफ़ॉल्ट रूप से वर्तमान निर्देशिका में या दूसरे पैरामीटर के रूप में दिए गए एक को निकालती है।
>>> newzip.extract('json.txt','newdir')'newdir\\json.txt'
निकालें ()
यह विधि संग्रह में सभी फाइलों को डिफ़ॉल्ट रूप से वर्तमान निर्देशिका में निकालती है। यदि आवश्यक हो तो पैरामीटर के रूप में वैकल्पिक निर्देशिका निर्दिष्ट करें।
>>> newzip.extractall('newdir')
getinfo()
यह विधि दी गई फ़ाइल के अनुरूप ZipInfo ऑब्जेक्ट लौटाती है। ZipInfo ऑब्जेक्ट में फ़ाइल की विभिन्न मेटाडेटा जानकारी होती है।
निम्नलिखित कोड संग्रह से 'zen.txt' की ज़िपइन्फो ऑब्जेक्ट प्राप्त करता है और इससे फ़ाइल नाम, आकार और दिनांक-समय की जानकारी पुनर्प्राप्त करता है।
>>> inf =newzip.getinfo('zen.txt')>>> inf.filename,inf.file_size, inf.date_time('zen.txt', 878, (2018, 11, 25, 23, 13, 45))
जानकारी सूची ()
यह विधि संग्रह में सभी फ़ाइल के ZipInfo ऑब्जेक्ट की सूची लौटाती है।
>>> newzip.infolist()[, ]
जैसा कि पहले उल्लेख किया गया है, ज़िप संग्रह का निर्माण करते समय लागू होने वाला संपीड़न एल्गोरिदम संपीड़न पैरामीटर में निर्दिष्ट है। निम्नलिखित कोड में, ZIP-DEFLATED स्थिरांक zlib संपीड़न का उपयोग करके संग्रह बनाता है।
फाइल के लिए फाइलों में:zipobj.write(file)>>> zipobj.close()नामसूची ()
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']
सेटपासवर्ड ()
यह विधि पासवर्ड पैरामीटर सेट करती है जो संग्रह को निकालने के समय प्रदान किया जाना चाहिए।
PyZipFile()
zipfile मॉड्यूल में यह फ़ंक्शन PyZipFile ऑब्जेक्ट देता है। PyZipFile ऑब्जेक्ट .py एक्सटेंशन वाली फ़ाइलों वाले मॉड्यूल का निर्माण कर सकता है। इस संग्रह को sys.path पर्यावरण चर में जोड़ा जा सकता है ताकि मॉड्यूल को zipimport मॉड्यूल का उपयोग करके आयात किया जा सके।
राइटपी () विधि .py फ़ाइल को संबंधित .pyc फ़ाइल में संकलित करने के बाद संग्रह में जोड़ती है।
फ़ाइल के लिए फ़ाइलें:pyzipobj.writepy(file)>>> pyzipobj.close()इस लेख में ज़िपफाइल मॉड्यूल में कक्षाओं और कार्यों पर चर्चा की गई है।