假设我有一个名为config.py的模块,其中包含与我连接的硬件有关的数据,我现在希望使用两个不同的硬件,hw1和hw2。 config.py可以访问一个标志,因此它知道我正在使用哪个硬件。我希望将特定的hw1配置数据放在自己的文件中,同样也放在hw2中。
所以我现在有这样的事情:
config.py
hw1_config.py
hw2_config.py
然后执行条件导入以将一个或另一个导入config.py
if hw = "hw1":
from hw1_conifg import *
elif hw = "hw2":
from hw2_conifg import *
这是一个好方法吗?
我是否可以在config.py的文件夹中创建名为hw1和hw2的文件夹,并将hw1_config.py移动到hw1文件夹中,将其重命名为config.py。同样适用于hw2_config.py。那么条件导入会如何?
config.py
/hw1/config.py
/hw2/config.py
我可能希望将来将config.py分解为例如startup_config.py和shutdown_config.py。同样,这些文件根据所涉及的hw而不同。在这种情况下,什么可能是一个好的文件/文件夹结构?
config/startup.py
config/shutdown.py
config/hw1/startup.py
config/hw1/shutdown.py
config/hw2/startup.py
config/hw2/shutdown.py
答案 0 :(得分:1)
我认为第一个解决方案看起来没问题
if hw = "hw1":
from hw1_config import *
elif hw = "hw2":
from hw2_config import *
如果您打算将配置文件移动到单独的文件夹,则可以在每个文件夹(__init__.py
,hw1/__init__.py
)中创建文件hw2/__init__.py
,然后在原始文件夹中config.py
文件,导入配置如下:
if hw = "hw1":
from hw1.config import *
elif hw = "hw2":
from hw2.config import *
至于第三种结构,我认为这一步有点为时过早 - 您可以glob
每个目录中的文件名,然后逐个导入它们。