我的当前目录中具有以下目录和文件结构:
├── alpha
│ ├── A.py
│ ├── B.py
│ ├── Base.py
│ ├── C.py
│ └── __init__.py
└── main.py
alpha /目录下的每个文件都是它自己的类,并且每个类都会继承Base.py中的Base类。现在,我可以在main.py中执行以下操作:
from alpha.A import *
from alpha.B import *
from alpha.C import *
A()
B()
C()
它工作正常。但是,如果要添加文件和类“ D”,然后在main.py中使用D(),则必须进入main.py并执行“从alpha.D import *”。无论如何,有没有要在我的主文件中进行导入,以便将所有内容导入alpha目录下的内容?
答案 0 :(得分:0)
好问题!谷歌搜索后,我在this SO post上找到了答案:“ python导入整个目录。”
希望有帮助!
答案 1 :(得分:0)
取决于您要对这些对象做什么,一种可能的解决方案可能是:
import importlib
import os
for file in os.listdir("alpha"):
if file.endswith(".py") and not file.startswith("_") and not file.startswith("Base"):
class_name = os.path.splitext(file)[0]
module_name = "alpha" + '.' + class_name
loaded_module = importlib.import_module(module_name)
loaded_class = getattr(loaded_module, class_name)
class_instance = loaded_class()
用*
导入所有内容不是一个好习惯,因此,如果您的文件只有一个类,则导入该类是“更干净的”(您的情况是class_name
)