使用“ 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 filea参数的路径。如果它不是有效的ZIP存档,则会引发ZipImportError。>>> import zipimport

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

find_module()

对于指定的模块,此方法为earch。如果找到模块,则返回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)

Logo

GitCode AI社区是一款由 GitCode 团队打造的智能助手,AI大模型社区、提供国内外头部大模型及数据集服务。

更多推荐