Python:从模块中创建用户定义方法的列表,并由用户inpu引用/调用它们

2024-03-28 18:28:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我为标题的混乱道歉。你知道吗

我正在解决一个问题,在这个问题中,我希望在我的子目录中有一个模块主.py. 我想在子目录中有任意数量的.py文件。从这里开始,我想接收用户输入,例如字符串“foo”,然后搜索这个模块中的所有方法,如果存在的话调用它。我正在研究dir或inspect模块,以及getattr/hasattr方法的某种弗兰肯斯坦组合,但是还没有找到一种可行的方法。你知道吗

inspect.getmembers(module_name, inspect.ismethod)

这给我带来了大量的预定义方法,我不确定如何进行排序。如果有更好的办法的话,泰亚。否则,我将如何处理上述情况?你知道吗


Tags: 模块文件方法字符串用户py标题数量
1条回答
网友
1楼 · 发布于 2024-03-28 18:28:08

对于你的具体案例来说,这应该管用。循环遍历子目录中的所有文件,尝试将它们作为模块导入,并尝试查找和执行给定名称的函数。你知道吗

import importlib, os

pkg = 'some_pkg'  # this must be a python package

for x in os.listdir(pkg):
    try:
        module = importlib.import_module(pkg + '.' + x.replace('.py', ''))
        fnc = getattr(module, 'foo')
        fnc()
        # break in case you want to stop at the first 'foo' fnc you find
    except:
        print('no foo here, or not a module!')

相关问题 更多 >