Module zipimport cho phép import Python modules và packages từ ZIP-format archives. Module này cũng cho phép item của sys.path là string tên ZIP file archive. Bất kỳ file nào có thể có trong ZIP archive, nhưng chỉ file .py và .pyc có sẵn cho import. ZIP import của dynamic modules bị cấm.
Chức năng module được giải thích bằng việc build zip archive từ file trong thư mục newdir. Giả sử các file sau trong 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()
Dùng zipimp.zip cho phần còn lại.
Module zipimport định nghĩa class zipimporter với các methods:
zipimporter()
Constructor tạo zipimporter instance mới. Yêu cầu path đến ZIP file. ZipImportError ném ra nếu không phải ZIP archive hợp lệ.
>>> import zipimport
>>> importer = zipimport.zipimporter('zipimp.zip')
find_module()
Tìm module chỉ định. Trả về zipimporter instance nếu tìm thấy, None nếu không.
>>> ret = importer.find_module('prime')
>>> ret
>>> ret = importer.find_module('sample')
>>> ret
>>> print(ret)
None
get_code()
Trả về code object cho module chỉ định, raise ZipImportError nếu không tìm thấy.
>>> prog = importer.get_code('prime')
>>> print(prog)
at 0x022A4650, file "zipimp.zip\prime.py", line 1>
load_module()
Load module chỉ định. Trả về imported module, hoặc raise ZipImportError nếu không tìm thấy.
>>> importer = zipimport.zipimporter('zipimp.zip')
>>> mod = importer.load_module('prog')
30
>>> mod.__name__
'prog'
>>> mod.__file__
'zipimp.zip\\prog.py'
>>> mod.__loader__
get_source()
Trả về source code cho module chỉ định.
>>> 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)