Computer >> Máy Tính >  >> Lập trình >> Python

Mô-đun nhập Python từ kho lưu trữ Zip (zipimport)

Việc sử dụng mô-đun 'zipimport' giúp bạn có thể nhập các mô-đun và gói Python từ các kho lưu trữ định dạng ZIP. Mô-đun này cũng cho phép một mục của sys.path là một chuỗi đặt tên cho một kho lưu trữ tệp ZIP. Mọi tệp đều có thể có trong kho lưu trữ ZIP, nhưng chỉ tệp .py và .pyc mới có sẵn để nhập. Nhập ZIP của các mô-đun động không được phép.

Chức năng của mô-đun này được giải thích bằng cách đầu tiên xây dựng một kho lưu trữ zip của các tệp trong thư mục 'newdir'. Các tệp sau đây được cho là có trong thư mục newdir

['đoán.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()

Bây giờ chúng tôi sử dụng 'zipimp.zip' trong phần còn lại của bài viết.

Mô-đun 'zipimport' xác định zipimporter lớp trong đó các phương thức sau được định nghĩa

zipimporter ()

Phương thức này là phương thức khởi tạo tạo ra một phiên bản zipimporter mới. Nó yêu cầu đường dẫn đến đối số của tệp ZIP. ZipImportError xuất hiện nếu nó không phải là một kho lưu trữ ZIP hợp lệ.

>>> import zipimport
>>> importer = zipimport.zipimporter('zipimp.zip')

find_module ()

Phương thức này tìm kiếm một mô-đun được chỉ định. Nó trả về phiên bản zipimporter nếu mô-đun được tìm thấy hoặc Không có nếu không.

>>> ret=importer.find_module('prime')
>>> ret
<zipimporter object "zipimp.zip">
>>> ret=importer.find_module('sample')
>>> ret
>>> print (ret)
None

get_code ()

Phương thức này trả về đối tượng mã cho mô-đun được chỉ định, tăng ZipImportError nếu không tìm thấy mô-đun.

>>> prog=importer.get_code('prime')
>>> print (prog)
<code object <module> at 0x022A4650, file "zipimp.zip\prime.py", line 1>

load_module ()

Phương thức này tải mô-đun được chỉ định. Nó trả về mô-đun đã nhập hoặc tăng 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__
<zipimporter object "zipimp.zip">

get_source ()

Phương thức này trả về mã nguồn cho mô-đun được 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)