python以编程方式从不同的文件夹导入相同的文件名

时间:2011-07-05 13:00:40

标签: 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 :(得分: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