2011-07-05 5 views
0

私はすべてのsettings.pyファイルが変数Pythonのimport同じファイル名を

DOMAIN_KEY =「」

が方法はありますがあり、以下の構造

sites 
    - SiteA 
    - Settings.py 
    - SiteA 
    - Settings.py 
    - SiteA 
    - Settings.py 

を持っていますプログラムでこの構造体をインポートし、この変数をすべての設定ファイルで調べて印刷しますか?

EDIT(更新されたコード):インポートが正常に動作していない

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 

、私はフォルダ名を知らなくても、設定ファイルをインポートする方法を確認していません。

import SiteA.Settings as A, SiteB.Settings as B, SiteC.Settings as C 
print(A.DOMAIN_KEY, B.DOMAIN_KEY, C.DOMAIN_KEY) 

EDIT:別のオプションは、あなたがそのでモジュールをロードすることができます__import__()声明、だろうあなたはこれらのモジュールと、このようにその変数にアクセスすることができ、重複するファイル名を持っていないと仮定すると

+0

"SiteA"はディレクトリ名ですか?彼らは本当に別の名前を持つべきですか?実行しているスクリプトの場所は何ですか? – viraptor

+0

siteAは__init__.pyファイルを持つpythonディレクトリです。スクリプトは、メインディレクトリ(サイト)から実行されます。 –

答えて

0

名前:

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 
+1

前者の場合、各ディレクトリに\ _ \ _ init \ _ \ _。pyを追加してパッケージとして認識されるようにする必要があります。 –

+0

'mod = __import __("サイト%c.Settings "%char、fromlist = ["サイト%c "%char])'を使うか、 'mod.Settings.DOMAIN_KEY'を' mod。 DOMAIN_KEY'。 – zeekay

+0

私はフォルダ名を知らないので、これは私にとってはうまくいかないでしょう。コードを使用してポストを更新しました –

関連する問題