模块的Python目录结构

时间:2019-04-24 21:25:09

标签: python class module directory-structure

我的当前目录中具有以下目录和文件结构:

├── 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目录下的内容?

2 个答案:

答案 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