我刚刚开始使用Java,C,c ++等多年的python.我有一长串文件/模块,每个文件/模块都包含一个我想动态调用的主要方法.对于每个关键字,我有一个名为get_foo的.py文件,并且在每个get_foo.py中都有一个foo方法.所以我想传入命令名"foo"并执行方法get_foo.foo()
我真的不想用丑陋的if/then/else块来做这件事
sections = [ "abstract", "claim", "drawing", "examiner"]
command = "claim"
Run Code Online (Sandbox Code Playgroud)
我想要什么样的东西
exec("get_" + command + "." + command)
Run Code Online (Sandbox Code Playgroud)
但我真的不知道exec/eval/etc的哪个区域可以做到这一点.
使用该importlib模块动态导入,并getattr()找到您的功能:
import importlib
def call_command(cmd):
mod = importlib.import_module('get_' + cmd)
func = getattr(mod, cmd)
return func()
Run Code Online (Sandbox Code Playgroud)
或者,只需导入所有模块并将它们添加到dict to map命令到callable:
import get_foo, get_bar, get_baz
commands = dict(foo=get_foo.foo, bar=get_bar.bar, baz=get_baz.baz)
def call_command(cmd):
return commands[cmd]()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |