2012-05-10 8 views
2

私はいくつかのディレクトリ名を個々の変数として記録するPythonスクリプトを持っています。これらのディレクトリの中には存在するものもあれば、実行時に作成する必要があるものもあります。私は、このディレクトリツリーがある場合Pythonでディレクトリツリーのパスを管理する

たとえば、:

./top 
    /a 
     /a1 
     /a2 
    /b 
     /b1 
    /c 

を、私は現在、個々の変数で、すべてのディレクトリパス名を追跡:

top_path = os.path.join(os.curdir, 'top') 
a_path = os.path.join(top_path, 'a') 
# etc... 

が、それらを整理するいいだろう実際のOSディレクトリのサポートでなければ、ディレクトリツリーを尊重する何らかの方法です。

pythonでディレクトリツリー(または変数ツリー)を管理する標準的な方法はありますか?または、すべてをネストされたリストまたはタプルに格納するか、自分のクラスを作成するだけですか? top.a.a1のような素敵なAPIを使って何か './top/a/a1'を返すと素晴らしいものになります。

答えて

3

dict-of-dictsはどうですか?ような何か:

tree = { 
     'top': { 
       'a': { 
        'path': a_pathvar, 
        'a1': 
        'a2': 
       } 
       'b': { 
        'path': b_pathvar, 
       } 
     } 
     } 

その後、あなたは簡単にtree['top']['a']['a1']['path']a1のためのパス変数にアクセスすることができました。あなたは簡単に単一のコード行で、このツリー構造を作成することができます。

tree['top']['a']['long']['tree']['path'] = path_var 

この:

def tree(): return defaultdict(tree) 

この構造の素敵なプロパティは、パスを作成しようとした場合、中間のキーが存在する必要はないということですあなたのために中間キーを自動的に作成します

Thisページがより詳細になります。

関連する問題