'zipimport' मॉड्यूल के उपयोग से Python मॉड्यूल और पैकेज को ZIP-फॉर्मेट आर्काइव से आयात करना संभव हो जाता है। यह मॉड्यूल sys.path की एक आइटम को ZIP फ़ाइल आर्काइव का नाम देने वाली स्ट्रिंग होने की अनुमति भी देता है। आर्काइव में कोई भी फ़ाइल मौजूद हो सकती है, लेकिन केवल .py और .pyc फ़ाइलें आयात के लिए उपलब्ध हैं। डायनामिक मॉड्यूल का ZIP आयात अस्वीकृत है।
इस मॉड्यूल की कार्यक्षमता को 'newdir' डायरेक्टरी में फ़ाइलों का एक ZIP आर्काइव बनाकर समझाया गया है। निम्नलिखित फ़ाइलों को newdir डायरेक्टरी में मौजूद माना जाता है
['guess.py', 'hello.py', 'impzip.py', 'mytest.py', 'prime.py', 'prog.py', 'tmp.py']
import sys, glob
import zipfile
files = glob.glob("*.py")
print(files)
zf = zipfile.PyZipFile('zipimp.zip', mode='w')
for file in files:
zf.write(file)
zf.close()
अब हम शेष लेख में 'zipimp.zip' का उपयोग करते हैं।
'zipimport' मॉड्यूल zipimporter क्लास को परिभाषित करता है जिसमें निम्नलिखित मेथड परिभाषित हैं
zipimporter()
यह मेथड कंस्ट्रक्टर है जो एक नया zipimporter इंस्टेंस बनाता है। इसके लिए ZIP फ़ाइल के पथ की आवश्यकता होती है। यदि यह वैध ZIP आर्काइव नहीं है तो ZipImportError उठाया जाता है।
>>> import zipimport
>>> importer = zipimport.zipimporter('zipimp.zip')
find_module()
यह मेथड निर्दिष्ट मॉड्यूल की खोज करता है। यदि मॉड्यूल मिल जाता है तो zipimporter इंस्टेंस लौटाता है, या नहीं मिलने पर None।
>>> ret = importer.find_module('prime')
>>> ret
>>> ret = importer.find_module('sample')
>>> ret
>>> print(ret)
None
get_code()
यह मेथड निर्दिष्ट मॉड्यूल के लिए कोड ऑब्जेक्ट लौटाता है, यदि मॉड्यूल नहीं मिला तो ZipImportError उठाता है।
>>> prog = importer.get_code('prime')
>>> print(prog)
at 0x022A4650, file "zipimp.zip\prime.py", line 1>
load_module()
यह मेथड निर्दिष्ट मॉड्यूल को लोड करता है। यह आयातित मॉड्यूल लौटाता है, या यदि नहीं मिला तो ZipImportError उठाता है।
>>> importer = zipimport.zipimporter('zipimp.zip')
>>> mod = importer.load_module('prog')
30
>>> mod.__name__
'prog'
>>> mod.__file__
'zipimp.zip\\prog.py'
>>> mod.__loader__
get_source()
यह मेथड निर्दिष्ट मॉड्यूल के लिए स्रोत कोड लौटाता है।
>>> prog = importer.get_source('prime')
>>> print(prog)
def isprime(x):
for i in range(2, x-1):
if x%i==0:
return False
else:
return True
f = int(input())
l = int(input())
primelist = list(filter(isprime, range(f,l)))
print("prime1", "prime2", "composites")
composites=[(primelist[i-1], primelist[i], (primelist[i]-1)-primelist[i-1]) for i in range(1,len(primelist))]
print(composites)