Python 3.7

zipfile - ज़िप अभिलेखागार के साथ काम करें




python

zipfile - ज़िप अभिलेखागार के साथ काम करें

स्रोत कोड: Lib/zipfile.py

ज़िप फ़ाइल प्रारूप एक सामान्य संग्रह और संपीड़न मानक है। यह मॉड्यूल एक ज़िप फ़ाइल बनाने, पढ़ने, लिखने, जोड़ने और सूचीबद्ध करने के लिए उपकरण प्रदान करता है। इस मॉड्यूल के किसी भी उन्नत उपयोग के लिए प्रारूप की समझ की आवश्यकता होगी, जैसा कि PKZIP एप्लीकेशन नोट में परिभाषित किया गया है।

यह मॉड्यूल वर्तमान में मल्टी-डिस्क ज़िप फ़ाइलों को हैंडल नहीं करता है। यह ज़िप फ़ाइलों को संभाल सकता है जो ZIP64 एक्सटेंशन का उपयोग करता है (जो कि ज़िप फाइलें हैं जो आकार में 4 GiB से अधिक हैं)। यह ज़िप अभिलेखागार में एन्क्रिप्टेड फ़ाइलों के डिक्रिप्शन का समर्थन करता है, लेकिन यह वर्तमान में एक एन्क्रिप्टेड फ़ाइल नहीं बना सकता है। डिक्रिप्शन बेहद धीमा है क्योंकि यह सी के बजाय देशी पायथन में लागू किया गया है।

मॉड्यूल निम्नलिखित वस्तुओं को परिभाषित करता है:

exception zipfile.BadZipFile

खराब ज़िप फ़ाइलों के लिए त्रुटि को उठाया गया।

संस्करण 3.2 में नया।

exception zipfile.BadZipfile

BadZipFile उपनाम, पुराने पायथन संस्करणों के साथ संगतता के लिए।

3.2 संस्करण के बाद से पदावनत।

exception zipfile.LargeZipFile

त्रुटि जब एक ज़िप फ़ाइल ZIP64 कार्यक्षमता की आवश्यकता होगी, लेकिन यह सक्षम नहीं किया गया है।

class zipfile.ZipFile

ज़िप फ़ाइलों को पढ़ने और लिखने के लिए वर्ग। कंस्ट्रक्टर विवरण के लिए अनुभाग ZIPFile ऑब्जेक्ट देखें।

class zipfile.PyZipFile

पायथन पुस्तकालयों वाले ज़िप अभिलेखागार बनाने के लिए कक्षा।

class zipfile.ZipInfo(filename='NoName', date_time=(1980, 1, 1, 0, 0, 0))

किसी संग्रह के सदस्य के बारे में जानकारी का प्रतिनिधित्व करने के लिए कक्षा का उपयोग किया जाता है। इस वर्ग के उदाहरणों को infolist() ऑब्जेक्ट्स के infolist() और infolist() तरीकों से लौटाया जाता है। zipfile मॉड्यूल के अधिकांश उपयोगकर्ताओं को इन्हें बनाने की आवश्यकता नहीं होगी, लेकिन केवल इस मॉड्यूल द्वारा बनाए गए का उपयोग करें। फ़ाइल नाम पुरालेख सदस्य का पूरा नाम होना चाहिए, और date_time में छह फ़ील्ड्स वाला एक टपल होना चाहिए जो फ़ाइल में अंतिम संशोधन के समय का वर्णन करता है; फ़ील्ड अनुभाग में वर्णित हैं।

zipfile.is_zipfile(filename)

रिटर्न अगर ट्रूनाम एक जादू की संख्या के आधार पर एक वैध ज़िप फ़ाइल है, तो अन्यथा रिटर्न देता है। फ़ाइल नाम फ़ाइल या फ़ाइल जैसी वस्तु भी हो सकती है।

संस्करण 3.1 में परिवर्तित: फ़ाइल और फ़ाइल जैसी वस्तुओं के लिए समर्थन।

zipfile.ZIP_STORED

एक असंपीड़ित संग्रह सदस्य के लिए संख्यात्मक स्थिरांक।

zipfile.ZIP_DEFLATED

सामान्य ज़िप संपीड़न विधि के लिए संख्यात्मक स्थिरांक। इसके लिए zlib मॉड्यूल की आवश्यकता होती है।

zipfile.ZIP_BZIP2

BZIP2 संपीड़न विधि के लिए संख्यात्मक स्थिर। इसके लिए bz2 मॉड्यूल की आवश्यकता होती है।

संस्करण 3.3 में नया।

zipfile.ZIP_LZMA

LZMA संपीड़न विधि के लिए संख्यात्मक स्थिर। इसके लिए lzma मॉड्यूल की आवश्यकता होती है।

संस्करण 3.3 में नया।

ध्यान दें

ज़िप फ़ाइल प्रारूप विनिर्देश में 2001 से bzip2 संपीड़न के लिए समर्थन शामिल है, और 2006 के बाद से LZMA संपीड़न के लिए। हालांकि, कुछ उपकरण (पुराने पायथन रिलीज सहित) इन संपीड़न विधियों का समर्थन नहीं करते हैं, और या तो ज़िप फ़ाइल को पूरी तरह से संसाधित करने से इनकार कर सकते हैं, या व्यक्तिगत फ़ाइलों को निकालने में विफल।

यह भी देखें

PKZIP एप्लीकेशन नोट
फिल काट्ज द्वारा ज़िप फ़ाइल प्रारूप पर प्रलेखन, प्रारूप और एल्गोरिदम के निर्माता का इस्तेमाल किया।
जानकारी- ज़िप होम पेज
जानकारी-ज़िप परियोजना के ज़िप संग्रह कार्यक्रमों और विकास पुस्तकालयों के बारे में जानकारी।

ZipFile ऑब्जेक्ट्स

class zipfile.ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None)

एक ज़िप फ़ाइल खोलें, जहाँ फ़ाइल एक फ़ाइल (एक स्ट्रिंग), एक फ़ाइल जैसी वस्तु या एक पथ जैसी वस्तु के लिए पथ हो सकती है

मोड पैरामीटर को किसी मौजूदा फ़ाइल को पढ़ने के लिए 'r' होना चाहिए, एक नई फ़ाइल को छोटा और लिखने के लिए 'a' , मौजूदा फाइल को बनाने के लिए 'a' या विशेष रूप से एक नई फ़ाइल लिखने और लिखने के लिए 'x' होना चाहिए। यदि मोड 'x' और फ़ाइल किसी मौजूदा फ़ाइल को संदर्भित करती है, तो FileExistsError को उठाया जाएगा। यदि मोड 'a' और फाइल मौजूदा जिप फाइल को संदर्भित करती है, तो इसमें अतिरिक्त फाइलें जोड़ी जाती हैं। यदि फ़ाइल ज़िप फ़ाइल का संदर्भ नहीं देती है, तो फ़ाइल में एक नया ज़िप संग्रह जोड़ा जाता है। यह एक ज़िप संग्रह को किसी अन्य फ़ाइल में जोड़ने के लिए है (जैसे कि python.exe )। यदि मोड 'a' और फाइल बिल्कुल मौजूद नहीं है, तो इसे बनाया जाता है। यदि मोड 'r' या 'a' , तो फाइल को खोजने योग्य होना चाहिए।

संपीड़न संग्रह लिखने के दौरान उपयोग करने के लिए ज़िप संपीड़न विधि है, और ZIP_STORED , ZIP_DEFLATED , ZIP_BZIP2 या ZIP_LZMA होनी चाहिए; बिना मान्यता के मान NotImplementedError को उठाया जाएगा। यदि ZIP_DEFLATED , ZIP_BZIP2 या ZIP_LZMA निर्दिष्ट है, लेकिन संबंधित मॉड्यूल ( zlib , bz2 या lzma ) उपलब्ध नहीं है, तो RuntimeError को उठाया जाता है। डिफ़ॉल्ट ZIP_STORED

यदि allowZip64 True (डिफ़ॉल्ट) zipfile ज़िप फाइलें बनाएगा जो ज़िप 64 एक्सटेंशन का उपयोग करता है जब zipfile 4 GiB से बड़ा होता है। यदि यह false zipfile एक अपवाद उठाएगा ZIP फ़ाइल को ZIP64 एक्सटेंशन की आवश्यकता होगी।

कंप्रेसलेवल पैरामीटर संग्रह में फ़ाइलों को लिखते समय उपयोग करने के लिए संपीड़न स्तर को नियंत्रित करता है। ZIP_STORED या ZIP_LZMA का उपयोग करते ZIP_STORED इसका कोई प्रभाव नहीं पड़ता है। जब ZIP_DEFLATED पूर्णांक 0 का उपयोग करते हुए ZIP_DEFLATED स्वीकार किए जाते हैं (अधिक जानकारी के लिए zlib देखें)। ZIP_BZIP2 पूर्णांक का उपयोग करते ZIP_BZIP2 1 से 9 को स्वीकार किया जाता है (अधिक जानकारी के लिए bz2 देखें)।

यदि फ़ाइल मोड 'w' , 'x' या 'a' के साथ बनाई गई है और फिर संग्रह में किसी भी फाइल को जोड़े बिना closed गया है, तो खाली संग्रह के लिए उपयुक्त ज़िप संरचनाएं फ़ाइल में लिखी जाएंगी।

ZipFile एक संदर्भ प्रबंधक भी है और इसलिए कथन के with समर्थन करता है। उदाहरण में, स्टेटमेंट सूट समाप्त होने के बाद myzip को बंद कर दिया जाता है - भले ही कोई अपवाद हो:

with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')

संस्करण 3.2 में नया: संदर्भ प्रबंधक के रूप में ZipFile का उपयोग करने की क्षमता जोड़ा गया।

संस्करण 3.3 में परिवर्तित: bz2 और lzma संपीड़न के लिए जोड़ा गया समर्थन।

संस्करण 3.4 में परिवर्तित: ZIP64 एक्सटेंशन डिफ़ॉल्ट रूप से सक्षम हैं।

संस्करण 3.5 में बदल गया : अचूक धाराओं को लिखने के लिए जोड़ा गया समर्थन। 'x' मोड के लिए जोड़ा गया समर्थन।

संस्करण 3.6 में परिवर्तित: पहले, एक सादा RuntimeError को गैर-मान्यता प्राप्त संपीड़न मूल्यों के लिए उठाया गया था।

संस्करण में परिवर्तित किया गया 3.6.2: फ़ाइल पैरामीटर एक पथ-जैसी ऑब्जेक्ट को स्वीकार करता है।

संस्करण 3.7 में बदला गया: कंप्रेसलेवल पैरामीटर जोड़ें।

ZipFile.close()

संग्रह फ़ाइल बंद करें। अपने प्रोग्राम से बाहर निकलने से पहले आपको closed कॉल करना होगा या आवश्यक रिकॉर्ड नहीं लिखा जाएगा।

ZipFile.getinfo(name)

संग्रह सदस्य नाम के बारे में जानकारी के साथ एक ZipInfo ऑब्जेक्ट लौटें। संग्रह में वर्तमान में शामिल नहीं नाम के लिए getinfo() को कॉल करना एक KeyError को बढ़ाएगा।

ZipFile.infolist()

संग्रह के प्रत्येक सदस्य के लिए एक ZipInfo ऑब्जेक्ट वाली सूची लौटाएं। ऑब्जेक्ट उसी क्रम में हैं जैसे डिस्क पर वास्तविक ज़िप फ़ाइल में उनकी प्रविष्टियाँ यदि कोई मौजूदा संग्रह खोला गया था।

ZipFile.namelist()

नाम से संग्रह सदस्यों की सूची लौटाएं।

ZipFile.open(name, mode='r', pwd=None, *, force_zip64=False)

संग्रह के एक सदस्य को एक बाइनरी फ़ाइल जैसी ऑब्जेक्ट के रूप में एक्सेस करें। नाम या तो संग्रह के भीतर एक फ़ाइल का नाम हो सकता है या एक ZipInfo ऑब्जेक्ट। मोड पैरामीटर, यदि शामिल है, तो 'r' (डिफ़ॉल्ट) या 'w' होना चाहिए। pwd एन्क्रिप्टेड ज़िप फ़ाइलों को डिक्रिप्ट करने के लिए इस्तेमाल किया जाने वाला पासवर्ड है।

open() भी एक संदर्भ प्रबंधक है और इसलिए कथन के with समर्थन करता है:

with ZipFile('spam.zip') as myzip:
    with myzip.open('eggs.txt') as myfile:
        print(myfile.read())

मोड 'r' के साथ फ़ाइल जैसी ऑब्जेक्ट ( ZipExtFile ) केवल पढ़ने के लिए है और निम्नलिखित विधियाँ प्रदान करती है: read() , readline() , readlines() , seek() , tell() , __iter__() , __next__() । ये ऑब्जेक्ट जिपफाइल के स्वतंत्र रूप से काम कर सकते हैं।

mode='w' , एक लिखने योग्य फ़ाइल हैंडल लौटाया जाता है, जो write() विधि का समर्थन करता है। जबकि एक लिखने योग्य फ़ाइल हैंडल खुला है, ज़िप फ़ाइल में अन्य फ़ाइलों को पढ़ने या लिखने का प्रयास एक ValueError बढ़ाएगा।

फ़ाइल लिखते समय, यदि फ़ाइल का आकार पहले से ज्ञात नहीं है, लेकिन 2 GiB से अधिक हो सकता है, तो force_zip64=True पास force_zip64=True यह सुनिश्चित करने के लिए कि हेडर प्रारूप बड़ी फ़ाइलों का समर्थन करने में सक्षम है। यदि फ़ाइल का आकार पहले से ज्ञात है, तो file_size सेट के साथ एक ZipInfo ऑब्जेक्ट का निर्माण करें, और नाम पैरामीटर के रूप में उपयोग करें।

ध्यान दें

open() , read() और extract() मेथड्स एक फाइलनेम या एक ZipInfo ऑब्जेक्ट ले सकते हैं। जब आप डुप्लिकेट नामों वाले सदस्यों वाली ज़िप फ़ाइल को पढ़ने का प्रयास करेंगे, तो आप इसकी सराहना करेंगे।

संस्करण 3.6 में बदला गया : mode='U' का हटाया गया समर्थन। सार्वभौमिक newlines मोड में संपीड़ित पाठ फ़ाइलों को पढ़ने के लिए io.TextIOWrapper उपयोग करें।

संस्करण 3.6 में परिवर्तित: open() अब mode='w' विकल्प के साथ संग्रह में फाइल लिखने के लिए इस्तेमाल किया जा सकता है।

संस्करण 3.6 में परिवर्तित: एक बंद ज़िपफाइल पर कॉलिंग open() एक वैल्यूएयर बढ़ाएगा। पहले, एक RuntimeError को उठाया गया था।

ZipFile.extract(member, path=None, pwd=None)

संग्रह से वर्तमान कार्य निर्देशिका के लिए एक सदस्य निकालें; सदस्य इसका पूरा नाम या एक ZipInfo ऑब्जेक्ट होना चाहिए। इसकी फ़ाइल जानकारी यथासंभव सटीक रूप से निकाली गई है। पथ किसी भिन्न निर्देशिका को निकालने के लिए निर्दिष्ट करता है। सदस्य एक फ़ाइल नाम या एक ZipInfo ऑब्जेक्ट हो सकता है। pwd एन्क्रिप्टेड फाइलों के लिए इस्तेमाल किया जाने वाला पासवर्ड है।

सामान्यीकृत पथ (एक निर्देशिका या नई फ़ाइल) देता है।

ध्यान दें

यदि कोई सदस्य फ़ाइल नाम एक पूर्ण पथ है, तो एक ड्राइव / UNC शेयर पॉइंट और अग्रणी (बैक) स्लैश छीन लिया जाएगा, जैसे: ///foo/bar यूनिक्स पर ///foo/bar हो जाता है, और C:\foo\bar हो जाता है, जो foo\bar विंडोज पर। और एक सदस्य फ़ाइल नाम के सभी ".." घटकों को हटा दिया जाएगा, जैसे: ../../foo../../ba..r foo../ba..r हो जाता है। Windows अवैध वर्णों पर ( : , < , > , | , " ;; और * ) को अंडरस्कोर ( _ ) द्वारा प्रतिस्थापित किया गया।

संस्करण 3.6 में परिवर्तित: बंद ज़िपफ़ाइल पर कॉलिंग extract() एक वैल्यूएयर बढ़ाएगा। पहले, एक RuntimeError को उठाया गया था।

संस्करण में परिवर्तित किया गया 3.6.2: पथ पैरामीटर एक पथ जैसी वस्तु को स्वीकार करता है।

ZipFile.extractall(path=None, members=None, pwd=None)

संग्रह से सभी सदस्यों को वर्तमान कार्य निर्देशिका में निकालें। पथ किसी भिन्न निर्देशिका को निकालने के लिए निर्दिष्ट करता है। सदस्य वैकल्पिक हैं और namelist() द्वारा लौटी सूची का सबसेट होना चाहिए। pwd एन्क्रिप्टेड फाइलों के लिए इस्तेमाल किया जाने वाला पासवर्ड है।

चेतावनी

पूर्व निरीक्षण के बिना अविश्वसनीय स्रोतों से अभिलेखागार कभी न निकालें। यह संभव है कि फाइलें पथ के बाहर बनाई गई हों, उदाहरण के लिए ऐसे सदस्य जिनके पास पूर्ण फ़ाइल नाम "/" या फ़ाइलनाम के साथ दो डॉट्स ".." "/" साथ शुरू होता है। यह मॉड्यूल उसे रोकने का प्रयास करता है। extract() नोट देखें।

संस्करण 3.6 में परिवर्तित: एक बंद ज़िपफाइल पर कॉलिंग extractall() एक ValueError बढ़ाएगा। पहले, एक RuntimeError को उठाया गया था।

संस्करण में परिवर्तित किया गया 3.6.2: पथ पैरामीटर एक पथ जैसी वस्तु को स्वीकार करता है।

ZipFile.printdir()

संग्रह के लिए sys.stdout लिए सामग्री की तालिका प्रिंट करें।

ZipFile.setpassword(pwd)

एन्क्रिप्टेड फ़ाइलों को निकालने के लिए डिफ़ॉल्ट पासवर्ड के रूप में pwd सेट करें।

ZipFile.read(name, pwd=None)

संग्रह में फ़ाइल नाम के बाइट्स लौटाएं। नाम संग्रह में फ़ाइल, या एक ZipInfo ऑब्जेक्ट का नाम है। संग्रह को पढ़ने या जोड़ने के लिए खुला होना चाहिए। pwd एन्क्रिप्टेड फ़ाइलों के लिए उपयोग किया जाने वाला पासवर्ड है और, यदि निर्दिष्ट किया गया है, तो यह setpassword() साथ डिफ़ॉल्ट पासवर्ड सेट को ओवरराइड करेगा। ZIP_STORED , ZIP_DEFLATED , ZIP_BZIP2 या ZIP_LZMA अलावा अन्य कंप्रेशन मेथड का उपयोग करने वाले ZIP_STORED read() कॉलिंग एक NotImplementedError । यदि संगत संपीड़न मॉड्यूल उपलब्ध नहीं है, तो एक त्रुटि भी उठाई जाएगी।

संस्करण 3.6 में परिवर्तित: एक बंद ज़िपफ़ाइल पर रीडिंग read() कॉलिंग एक ValueError बढ़ाएगा। पहले, एक RuntimeError को उठाया गया था।

ZipFile.testzip()

संग्रह की सभी फाइलों को पढ़ें और उनके सीआरसी और फ़ाइल हेडर की जाँच करें। पहली खराब फ़ाइल का नाम लौटाएँ, या फिर None लौटाएँ।

संस्करण 3.6 में बदल गया: एक बंद ज़िपफ़ाइल पर कॉलिंग testfile() एक वैल्यूएयर को बढ़ाएगा। पहले, एक RuntimeError को उठाया गया था।

ZipFile.write(filename, arcname=None, compress_type=None, compresslevel=None)

फ़ाइल नाम को आर्काइव में लिखें, इसे आर्काइव नाम आर्कनाम दें (डिफ़ॉल्ट रूप से, यह फ़ाइल नाम के समान होगा, लेकिन बिना ड्राइव अक्षर के और अग्रणी पथ विभाजकों को हटाए बिना)। यदि दिया जाता है, तो compress_type नई प्रविष्टि के लिए कंस्ट्रक्टर को संपीड़न पैरामीटर के लिए दिए गए मूल्य को ओवरराइड करता है। इसी तरह, कंप्रेसलेवल यदि दिए गए कंस्ट्रक्टर को ओवरराइड करेगा। संग्रह को 'w' , 'x' या 'a' साथ खुला होना चाहिए।

ध्यान दें

ज़िप फ़ाइलों के लिए कोई आधिकारिक फ़ाइल नाम एन्कोडिंग नहीं है। यदि आपके पास यूनिकोड फ़ाइल नाम हैं, तो आपको उन्हें write() पास करने से पहले अपने इच्छित एन्कोडिंग में बाइट स्ट्रिंग्स में परिवर्तित करना होगा। WinZip सभी फ़ाइल नामों की व्याख्या CP437 में एन्कोडेड के रूप में करता है, जिसे DOS लैटिन के रूप में भी जाना जाता है।

ध्यान दें

आर्काइव के नाम पुरालेख रूट के सापेक्ष होने चाहिए, अर्थात, उन्हें पथ विभाजक से शुरू नहीं करना चाहिए।

ध्यान दें

यदि arcname (या filename , यदि arcname नहीं दिया गया है) में एक अशक्त बाइट है, तो संग्रह में फ़ाइल का नाम अशक्त बाइट पर काट दिया जाएगा।

संस्करण 3.6 में परिवर्तित: मोड 'r' या एक बंद ज़िपफाइल के साथ बनाए गए एक जिपफाइल पर कॉलिंग write() एक वैल्यूएर को बढ़ाएगा। पहले, एक RuntimeError को उठाया गया था।

ZipFile.writestr(zinfo_or_arcname, data, compress_type=None, compresslevel=None)

संग्रह को स्ट्रिंग डेटा लिखें; zinfo_or_arcname या तो फ़ाइल नाम है जिसे इसे संग्रह में दिया जाएगा, या एक ZipInfo उदाहरण। यदि यह एक उदाहरण है, तो कम से कम फ़ाइल नाम, दिनांक और समय दिया जाना चाहिए। यदि यह एक नाम है, तो दिनांक और समय वर्तमान दिनांक और समय पर सेट है। संग्रह को मोड 'w' , 'x' या 'a' साथ खोला जाना चाहिए।

यदि दिया जाता है, तो compress_type नई प्रविष्टि के लिए, या zinfo_or_arcname में (यदि वह एक ZipInfo उदाहरण है) कंस्ट्रक्शन पैरामीटर के लिए दिए गए मान को ओवरराइड करता है। इसी तरह, कंप्रेसलेवल यदि दिए गए कंस्ट्रक्टर को ओवरराइड करेगा।

ध्यान दें

ZipInfo उदाहरण को zinfo_or_arcname पैरामीटर के रूप में पास करते समय , उपयोग की जाने वाली संपीड़न विधि उस दिए गए ZipInfo उदाहरण के compress_type सदस्य में निर्दिष्ट होगी। डिफ़ॉल्ट रूप से, ZipInfo कंस्ट्रक्टर इस सदस्य को ZIP_STORED सेट करता है।

संस्करण 3.2 में बदला गया: कंप्रेस_टाइप तर्क।

संस्करण 3.6 में बदला गया: मोड 'r' या एक बंद writestr() के साथ बनाए गए एक writestr() पर कॉलिंग writestr() एक writestr() । पहले, एक RuntimeError को उठाया गया था।

निम्नलिखित डेटा विशेषताएँ भी उपलब्ध हैं:

ZipFile.filename

जिप फाइल का नाम।

ZipFile.debug

डिबग आउटपुट का उपयोग करने का स्तर। इसे 0 (डिफ़ॉल्ट, कोई आउटपुट) से 3 (सबसे अधिक आउटपुट) पर सेट किया जा सकता है। डिबगिंग जानकारी sys.stdout को लिखी sys.stdout

ZipFile.comment

जिप फाइल से जुड़ा कमेंट टेक्स्ट। यदि 'w' , 'x' या 'a' के साथ बनाए गए ZipFile उदाहरण पर टिप्पणी दी जाती है, तो यह 65535 बाइट्स की तुलना में एक स्ट्रिंग नहीं होनी चाहिए। closed कहे जाने पर इससे अधिक लंबी टिप्पणियाँ लिखित संग्रह में काट दी जाएंगी।

PyZipFile ऑब्जेक्ट्स

PyZipFile कंस्ट्रक्टर ZipFile कंस्ट्रक्टर के रूप में एक ही पैरामीटर लेता है, और एक अतिरिक्त पैरामीटर, ऑप्टिमाइज़ करता है

class zipfile.PyZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, optimize=-1)

संस्करण 3.2 में नया: ऑप्टिमाइज़ पैरामीटर।

संस्करण 3.4 में परिवर्तित: ZIP64 एक्सटेंशन डिफ़ॉल्ट रूप से सक्षम हैं।

उदाहरणों में ZipFile ऑब्जेक्ट्स के अलावा एक विधि है:

writepy(pathname, basename='', filterfunc=None)

फ़ाइलों के लिए खोजें *.py और संग्रह के लिए इसी फ़ाइल जोड़ें।

यदि PyZipFile के लिए पैरामीटर ऑप्टिमाइज़ नहीं किया गया था या -1 , संबंधित फ़ाइल एक *.pyc फ़ाइल है, यदि आवश्यक हो तो संकलन।

यदि PyZipFile लिए ऑप्टिमाइज़ पैरामीटर 0 या 2 , तो केवल उस ऑप्टिमाइज़ेशन स्तर वाली फाइलें (देखें compile() देखें) को संग्रह में जोड़ा जाता है, यदि आवश्यक हो।

यदि pathname एक फ़ाइल है, तो फ़ाइल का नाम .py साथ समाप्त होना चाहिए, और शीर्ष स्तर (कोई पथ जानकारी) में बस (इसी *.pyc ) फ़ाइल जोड़ी गई है। यदि pathname एक फ़ाइल है जो .py साथ समाप्त नहीं होती है, तो RuntimeError को उठाया जाएगा। यदि यह एक निर्देशिका है, और निर्देशिका एक पैकेज निर्देशिका नहीं है, तो शीर्ष स्तर पर *.pyc सभी फाइलें जोड़ी *.pyc हैं। यदि निर्देशिका एक पैकेज निर्देशिका है, तो सभी *.pyc को एक फ़ाइल पथ के रूप में पैकेज नाम के तहत जोड़ा जाता है, और यदि कोई उपनिर्देशिका पैकेज निर्देशिका है, तो इन सभी को पुन: क्रमबद्ध क्रम में जोड़ा जाता है।

बेसन केवल आंतरिक उपयोग के लिए है।

फ़िल्टरफ़नक , यदि दिया जाता है, तो एक एकल स्ट्रिंग तर्क लेने वाला फ़ंक्शन होना चाहिए। संग्रह में जुड़ने से पहले इसे प्रत्येक पथ (प्रत्येक व्यक्तिगत पूर्ण फ़ाइल पथ सहित) को पारित कर दिया जाएगा। यदि फ़िल्टरफ़नक एक गलत मान देता है, तो पथ जोड़ा नहीं जाएगा, और यदि यह एक निर्देशिका है तो इसकी सामग्री को अनदेखा कर दिया जाएगा। उदाहरण के लिए, यदि हमारी परीक्षण फाइलें या तो test निर्देशिकाओं में हैं या स्ट्रिंग test_ साथ शुरू test_ , तो हम उन्हें बाहर करने के लिए एक फ़िल्टरफ़नक का उपयोग कर सकते हैं:

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)

writepy() विधि writepy() विधि इस तरह फ़ाइल नाम के साथ अभिलेखागार बनाती है:

string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile

संस्करण 3.4 में नया: फ़िल्टरफ़्यूक पैरामीटर।

संस्करण २.६.२ में परिवर्तित किया गया: पाथनाम पैरामीटर एक पथ-जैसी वस्तु को स्वीकार करता है।

संस्करण 3.7 में बदला गया: रिकर्सियन डायरेक्टरी प्रविष्टियों को सॉर्ट करता है।

ZipInfo ऑब्जेक्ट्स

ZipInfo वर्ग के उदाहरण ZipInfo getinfo() और infolist() ZipFile ऑब्जेक्ट्स के तरीकों द्वारा लौटाए जाते हैं। प्रत्येक ऑब्जेक्ट ज़िप संग्रह के एक सदस्य के बारे में जानकारी संग्रहीत करता है।

एक फ़ाइल सिस्टम फ़ाइल के लिए एक ZipInfo उदाहरण बनाने के लिए एक ZipInfo :

classmethod ZipInfo.from_file(filename, arcname=None)

एक फ़ाइल के लिए एक ज़िप फ़ाइल के लिए इसे जोड़ने की तैयारी में, एक फ़ाइल के लिए एक ZipInfo उदाहरण का निर्माण।

फ़ाइल नाम फ़ाइल सिस्टम पर फ़ाइल या निर्देशिका का पथ होना चाहिए।

यदि arcname निर्दिष्ट किया गया है, तो इसका उपयोग पुरालेख के नाम के रूप में किया जाता है। यदि आर्कनाम निर्दिष्ट नहीं है, तो नाम फ़ाइल नाम के समान होगा, लेकिन किसी भी ड्राइव अक्षर और अग्रणी पथ विभाजकों को हटा दिया जाएगा।

संस्करण 3.6 में नया।

संस्करण 3.6.2 में परिवर्तित: फ़ाइल नाम पैरामीटर एक पथ-जैसी ऑब्जेक्ट को स्वीकार करता है।

उदाहरणों में निम्नलिखित विधियाँ और विशेषताएँ हैं:

ZipInfo.is_dir()

यह संग्रह सदस्य एक निर्देशिका है तो True लौटें।

यह प्रविष्टि के नाम का उपयोग करता है: निर्देशिका हमेशा / साथ समाप्त होनी चाहिए।

संस्करण 3.6 में नया।

ZipInfo.filename

संग्रह में फ़ाइल का नाम।

ZipInfo.date_time

संग्रह सदस्य को अंतिम संशोधन का समय और तारीख। यह छह मूल्यों का एक समूह है:

सूची मूल्य
0 वर्ष (> = 1980)
1 महीना (एक-आधारित)
2 महीने का दिन (एक-आधारित)
3 घंटे (शून्य-आधारित)
4 मिनट (शून्य-आधारित)
5 सेकंड (शून्य-आधारित)

ध्यान दें

ज़िप फ़ाइल प्रारूप 1980 से पहले टाइमस्टैम्प का समर्थन नहीं करता है।

ZipInfo.compress_type

संग्रह सदस्य के लिए संपीड़न का प्रकार।

ZipInfo.comment

व्यक्तिगत संग्रह सदस्य के लिए टिप्पणी करें।

ZipInfo.extra

विस्तार क्षेत्र डेटा। PKZIP एप्लिकेशन नोट में इस स्ट्रिंग में निहित डेटा की आंतरिक संरचना पर कुछ टिप्पणियां हैं।

ZipInfo.create_system

सिस्टम जिसने ज़िप संग्रह बनाया।

ZipInfo.create_version

PKZIP संस्करण जिसने ज़िप संग्रह बनाया।

ZipInfo.extract_version

संग्रह को निकालने के लिए PKZIP संस्करण की आवश्यकता है।

ZipInfo.reserved

शून्य होना चाहिए।

ZipInfo.flag_bits

झंडे के झंडे।

ZipInfo.volume

फ़ाइल हेडर की वॉल्यूम संख्या।

ZipInfo.internal_attr

आंतरिक गुण।

ZipInfo.external_attr

बाहरी फ़ाइल विशेषताएँ।

ZipInfo.header_offset

फ़ाइल हेडर पर बाइट ऑफसेट।

ZipInfo.CRC

CRC-32 असम्पीडित फ़ाइल की।

ZipInfo.compress_size

संकुचित डेटा का आकार।

ZipInfo.file_size

असम्पीडित फ़ाइल का आकार।

कमांड लाइन इंटरफेस

zipfile मॉड्यूल ज़िप अभिलेखागार के साथ बातचीत करने के लिए एक सरल कमांड-लाइन इंटरफ़ेस प्रदान करता है।

यदि आप एक नया ज़िप संग्रह बनाना चाहते हैं, तो -c विकल्प के बाद उसका नाम निर्दिष्ट करें और फिर शामिल होने वाले फ़ाइलनाम (नामों) को सूचीबद्ध करें:

$ python -m zipfile -c monty.zip spam.txt eggs.txt

एक निर्देशिका पास करना भी स्वीकार्य है:

$ python -m zipfile -c monty.zip life-of-brian_1979/

यदि आप निर्दिष्ट निर्देशिका में ज़िप संग्रह निकालना चाहते हैं, तो -e विकल्प का उपयोग करें:

$ python -m zipfile -e monty.zip target-dir/

ज़िप संग्रह में फ़ाइलों की सूची के लिए, -l विकल्प का उपयोग करें:

$ python -m zipfile -l monty.zip

कमांड-लाइन विकल्प

-l <zipfile>
--list <zipfile>

फ़ाइलों को एक zipfile में सूचीबद्ध करें।

-c <zipfile> <source1> ... <sourceN>
--create <zipfile> <source1> ... <sourceN>

स्रोत फ़ाइलों से zipfile बनाएँ।

-e <zipfile> <output_dir>
--extract <zipfile> <output_dir>

टारगेट डायरेक्टरी में जिपफाइल निकालें।

-t <zipfile>
--test <zipfile>

परीक्षण करें कि जिप्फ़ाइल वैध है या नहीं।