【问题标题】:How can I recursively import every file in a directory and run a function in each one?如何递归导入目录中的每个文件并在每个文件中运行一个函数?
【发布时间】:2016-08-23 14:13:37
【问题描述】:

本质上,我正在尝试制作一个扩展系统,其中每个插件都通过文件中的相应功能挂钩到重要功能。我需要一种方法来运行此函数并获取返回值,只需遍历“plugins”目录即可。

有什么办法可以做到这一点?

【问题讨论】:

  • 您可能会发现 this answer 很有帮助,尽管它是为 Python 2 编写的。

标签: python python-3.x


【解决方案1】:

您可以使用__import__ 动态导入文件

所以你只需要遍历文件夹寻找 py 文件(不是 pyc)并导入它们

for root, dirs, files in os.walk(src_path):
    for f in files:
        if f.endswith('.py'):
            m = __import__(f)

m 现在将成为模块的实例,所以如果你在它下面有一个名为my_func 的函数,你可以这样做:

m.my_func()

或者如果你有函数的名字作为字符串:

getattr(m,'my_func')()

【讨论】:

  • 我实际上有 1 个问题,当我尝试运行该功能时,它说“模块'插件'没有属性'功能'”。知道为什么会这样吗?
  • 看来python找到了你的模块但没有找到函数(你真的调用了你的函数function吗?)尝试在你的模块中定义其他东西,看看它是否可以访问它们,或者添加一些你的代码,所以我可以帮助你
猜你喜欢
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 2020-12-02
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多