python 从zip文件导入模块_来自Zip存档的Python导入模块(zipimport)

本文介绍了如何使用Python的zipimport模块从ZIP存档文件中导入模块和包。首先展示了创建ZIP文件的过程,然后详细解释了zipimporter类的find_module(), get_code(), load_module()和get_source()等方法的用法,这些方法用于查找、加载和获取模块的源代码或代码对象。" 51565143,5624795,Windows 7 OpenStack 镜像制作及管理员启用,"['虚拟化', 'OpenStack', 'Windows', '系统管理']
摘要由CSDN通过智能技术生成

使用“ 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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值