我有以下结构
sites
- SiteA
- Settings.py
- SiteA
- Settings.py
- SiteA
- Settings.py
所有settings.py文件都有一个变量
DOMAIN_KEY =''
有没有办法以编程方式导入此结构并在所有设置文件中查看此变量并打印出来?
编辑(更新后的代码):
with cd(os.path.join(APPLICATION_DIR, 'config', 'sites')):
output = run ("ls -l | grep \"^d\"|awk {'print $8'}") # run will execute and return list of folders
for file in output.split():
__module = __import__('%s' % file)
print __module
print __module.TIME_ZONE
print __module.SITE_ID
导入无法正常工作,我不知道如何在不知道文件夹名称的情况下导入设置文件。
答案 0 :(得分:0)
假设您没有重复的文件名,您可以访问这些模块及其变量,如下所示:
import SiteA.Settings as A, SiteB.Settings as B, SiteC.Settings as C
print(A.DOMAIN_KEY, B.DOMAIN_KEY, C.DOMAIN_KEY)
编辑:另一个选项是__import__()
语句,可以让您加载一个名称为的模块:
for char in "ABC":
mod = __import__("Site%c.Settings")
print(mod.DOMAIN_KEY)
EDIT2:根据OP中的编辑。
为什么不直接在脚本中添加“设置”模块名称?
for file in output.split():
__module = __import__('%s.Settings' % file)
print __module.Settings.DOMAIN_KEY