模块的Python目录结构
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块的Python目录结构相关的知识,希望对你有一定的参考价值。
我在当前目录中有以下目录和文件结构:
├── 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并执行“from alpha.D import *”。反正有没有在我的主文件中导入,以便它导入alpha目录下的一切?
答案
好问题!我在google搜索后找到this SO post的答案:“python import complete directory。”
希望有所帮助!
另一答案
取决于你想要对象做什么,一个可能的解决方案可能是:
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
就是你的情况)
以上是关于模块的Python目录结构的主要内容,如果未能解决你的问题,请参考以下文章