Python从不同文件夹以编程方式导入同名文件
我有以下的结构:
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
导入没有正常工作,我不太确定如何在不知道文件夹名称的情况下导入设置文件。
1 个回答
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)
编辑2:根据原帖的更新。
你为什么不在脚本中获取的文件夹后面直接加上“Settings”模块的名字呢?
for file in output.split():
__module = __import__('%s.Settings' % file)
print __module.Settings.DOMAIN_KEY