標籤:python imp
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‘
Python之imp模組