2016-06-23 37 views
2

我正在使用ConfigObj 5.0.6來保存許多用戶定義的值,其中一些嵌套。我使用local.ini取代典型值。沒有前端,所以用戶根據需要編輯配置。爲了更容易和更直觀,有些值屬於配置對象的「根」級別,但在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 

這樣的佈局,符合市場預期,把val_2section_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['main_level']當我第一次實例化的配置對象,但我想知道如果我只是缺少的不是一些簡單的,正確的方法黑客攻擊。

回答

2

根據the documentation,這是不可能的:

在外部部分,單值只能任何子部分之前出現。

+0

這是一個真正的buzzkill!感謝您的快速響應 –