Python之imp模块

来源:互联网 发布:2017网络水军招募 编辑:程序博客网 时间:2024/04/29 23:15

imp.get_suffixes()

返回3元组列表(suffix, mode, type), 获得特殊模块的描述.suffix为文件后缀名;mode为打开文件模式; type为文件类型, 1代表PY_SOURCE, 2代表PY_COMPILED, 3代表C_EXTENSION

>>> imp.get_suffixes()[('.x86_64-linux-gnu.so', 'rb', 3), ('.so', 'rb', 3), ('module.so', 'rb', 3), ('.py', 'U', 1), ('.pyc', 'rb', 2)]

imp.find_module(name[, path])

  • 如果path为空,则按照sys.path路径搜索模块名, 返回三元组(file, pathname, description).file为刚打开的模块文件, pathname为模块的路径, description为imp.get_suffixes()返回的元组.
  • 如果模块为包,file返回None, pathname为包路径, description返回的type为PKG_DIRECTORY.
  • find_module不会处理层次结构的模块名(带’.’号的模块名module.name1.name2).
  • “path”必须是一个列表.
>>> print imp.find_module('os')(<open file '/usr/lib/python2.7/os.py', mode 'U' at 0x7fdeebd53a50>, '/usr/lib/python2.7/os.py', ('.py', 'U', 1))

imp.load_module(name, file, pathname, description)

  • 加载一个被find_module找到的模块. 如果模块已经被加载, 等同于reload().
  • 当模块是包或者不从文件加载时, file和pathname可以是None和”.
  • 成功加载后返回一个模块对象,否则抛出 ImportError异常.
  • 需要自己关闭file,最好用try…finally…

实例

>>> file, pathname, desc = imp.find_module('os')>>> myos = imp.load_module('sep', file, pathname, desc)>>> myos<module 'sep' from '/usr/lib/python2.7/os.pyc'>>>> myos.getcwd()'/home/ydoing/github/autorunner'
0 2
原创粉丝点击