给出以下文件夹结构:
executioner/:
- executioner.py
- library/:
- __init__.py
- global_functions.py
- oakalleyit.py
如果我想访问global_functions.py或oakalleyit.py中的函数,但在运行之前我不知道函数或模块的名称,我该怎么做?
类似的东西:
from library import 'oakalleyit'
'oakalleyit'.'cleanup'()
''
暗示它来自配置文件,CLI参数等
答案 0 :(得分:3)
您可以使用getattr()
function动态访问名称;这包括模块对象:
import library
getattr(library, 'oakalleyit')()
使用hashlib
模块进行演示:
>>> import hashlib
>>> getattr(hashlib, 'md5')()
<md5 HASH object @ 0x1012a02b0>
>>> getattr(hashlib, 'sha1')()
<sha1 HASH object @ 0x1012a03f0>
如果您需要动态模块访问,则需要使用importlib.import_module()
function根据字符串值导入模块:
from importlib import import_module
module = import_module('library.oakalleyit')
getattr(module, 'some_function_name')()