Python:从文件夹导入每个模块?

5 python directory import

什么是最好的(阅读:最干净的)告诉Python从某个文件夹导入所有模块的方法?

我想让人们把他们的"mods"(模块)放在我的应用程序的一个文件夹中,我的代码应该在每次启动时检查并导入放在那里的任何模块.

我也不希望在导入的东西中添加额外的范围(不是"myfolder.mymodule.something",而是"东西")

jsb*_*eno 5

如果在模块中转换文件夹本身,通过使用__init__.py文件并使用from <foldername> import *适合您,您可以使用"os.listdir"或"glob.glob"迭代文件夹内容,并导入以".py"结尾的每个文件与__import__内置函数:

import os
for name in os.listdir("plugins"):
    if name.endswith(".py"):
          #strip the extension
         module = name[:-3]
         # set the module name in the current global name space:
         globals()[module] = __import__(os.path.join("plugins", name)
Run Code Online (Sandbox Code Playgroud)

这种方法的好处是:它允许您动态地将模块名称传递给__import__- 而"繁琐"语句需要对模块名称进行硬编码,并且它允许您检查有关文件的其他内容 - 可能是大小,或者它们是否导入某些导入之前所需的模块.