2015-07-21 51 views
0

我想定義幾個值組,其中如果選擇了該組,則使用特定組的值。如何使用configobj定義和選擇值組?

這裏有一個例子來做出更清晰:

[environment] 
type=prod 

[prod] 
folder=data/ 
debug=False 

[dev] 
folder=dev_data/ 
debug=True 

然後使用它:

print config['folder'] # prints 'data/' because config['environment']=='prod' 

是否有一個自然或習慣的方法在configobj或以其他方式做到這一點?


附加信息

我當前的想法是覆蓋或使用一些邏輯交解析配置文件添加到所得到的配置對象。但是,這與配置文件的性質相反,感覺它需要一些複雜的邏輯來驗證。

回答

0

我知道這可能不是你正在尋找的東西,但你有沒有考慮使用json進行簡單的嵌套訪問?

例如,如果你的配置文件看起來像

{ 
    "environment": { 
     "type": "prod" 
    }, 
    "[dev]": { 
     "debug": "True", 
     "folder": "dev_data/" 
    }, 
    "[prod]": { 
     "debug": "False", 
     "folder": "data/" 
    } 
} 

你可以用[dev][prod]鍵訪問它,讓您的文件夾:

>>> config = json.loads(config_data) 
>>> config['[dev]']['folder'] 
'dev_data/' 
>>> config['[prod]']['folder'] 
'data/' 
+0

這主要是可能的configobj。我只是想避免'如果配置['環境'] ['type'] =='prod''在代碼中的任何地方...... – cammil

+0

哦,好吧,我不知道。那麼爲什麼不直接切換配置文件,一個用於開發,另一個用於生產? – adrianus

+0

@cammil或者全局設置(當初始化時)'config'變量到你想要的列表,無論是[dev]還是'[prod]'... – adrianus

相關問題