從Zip壓縮包匯入Python模組(zipimport)
使用'zipimport'模組可以從ZIP格式的壓縮包中匯入Python模組和包。此模組還允許sys.path的一個條目是一個命名ZIP檔案壓縮包的字串。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
<zipimporter object "zipimp.zip">
>>> ret=importer.find_module('sample')
>>> ret
>>> print (ret)
Noneget_code()
此方法返回指定模組的程式碼物件,如果找不到模組,則引發ZipImportError。
>>> prog=importer.get_code('prime')
>>> print (prog)
<code object <module> 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__
<zipimporter object "zipimp.zip">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)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP