2016-06-23 4 views
2

私は多くのユーザー定義値を保持するためにConfigObj 5.0.6を使用していますが、そのうちのいくつかはネストされています。私はlocal.iniを使って典型的な値を置き換えます。フロントエンドはないので、ユーザーは必要に応じてconfigsを編集します。これをより簡単で直観的にするために、configオブジェクトの 'root'レベルに属するいくつかの値がありますが、local.iniファイルのネストされたセクションの下ではより簡単に理解できます。ConfigObj 'un-nest'セクション

私はlocal.iniを使用してデフォルトに置き換えています。アプリの流れは、ネストされた値よりもネストされていない値を持つ設定レイアウトを示唆しています。

# un-nested 
title = my_title 

# nested 
[section_1] 
val_s1 = val 

[section_2] 
val_s2 = val 

# nested, but I want to be un-nested 
val_2 = val 

このレイアウトは、予想通り、section_2val_2を置く:

{ 
'title': 'my_title', 
{'section_1': {'val_s1': 'val'}}, 
{'section_2': {'val_s2': 'val'}, 
       {'val_2': 'val'}} 
} 

は、それがラインsection_2以下val_2を定義しますが、の「メイン」セクションの下でそれにアクセスすることが可能です設定オブジェクト?

私はこのような設定オブジェクトで終わるしたいと思います:

{ 
'title': 'my_title', 
{'section_1': {'val_s1': 'val'}}, 
{'section_2': {'val_s2': 'val'}}, 
'val_2': 'val' 
} 

コンフィグ辞書の順序はもちろん、重要ではありません。私が興味を持っているのは入れ子セクションを使うことができることですが、.iniの中からセクションを親に出ます。

私はテストしませんでしたが、最初の行からのすべてをに詰め込み、次に設定オブジェクトをスライスしても問題ありません。すなわち、それが作成するlocal.iniように書く:

{ 
'main_level': 
    { 
    'title': 'my_title', 
    {'section_1': {'val_s1': 'val'}}, 
    {'section_2': {'val_s2': 'val'}}, 
    'val_2': 'val' 
    } 
} 

そして、私が最初にconfigオブジェクトをインスタンス化するとき、私はconfig = config['main_level']を使用することができますが、私はただではない、いくつかの簡単な、正しい方法を欠けている場合、私は思ったんだけどハック。

答えて

2

the documentationによれば、それが不可能である:外側部分で

、単一の値のみが任意のサブセクションの前に現れることができます。

+0

よくある話です。迅速な応答ありがとう –