2009-06-19 61 views
3

當您的應用程序需要幾個(〜5)配置參數,並且應用程序將要使用非技術用戶(即KISS) 時,您通常如何處理讀取 配置選項,然後傳遞參數對象/函數之間 (多個模塊)?Python - 配置選項,如何輸入/處理?

選項示例:輸入和輸出目錄/文件名,詳細級別。

我通常使用optparse(Python)並傳遞選項/參數作爲 參數;但我想知道是否更常見的是使用配置文本 所有模塊的對象直接讀取的文件(但是,不是這個 就像擁有'全局'變量嗎?並且沒有任何人擁有'狀態?)。

另一個典型的問題是單元測試;如果我想單獨測試每個單獨模塊,則特定模塊可能只需要5個配置選項中的1個;你通常如何從應用程序的其餘部分分離單個 模塊/對象,但仍然允許它 接受1點或2所要求的參數(不單元測試框架莫名其妙 調用或接管配置功能)?

我的猜測是,沒有一種獨特的方法可以做到這一點,但它會讓你讀到各種方法或衆所周知的模式。

+0

我不確定「更新」技術會起作用。 SO並沒有在同步更新時做任何優雅的事情。有人的更新會丟失。 – 2009-06-19 20:18:45

回答

0
"Counts answer" 
Please update these counts and feel free to add/modify. 

Do you usually read config options via: 
- command-line/gui options : 1 
- a config text file  : 0 


How do multiple modules/objects have access to these options? 
- they receive them from the caller as an argument: 1 
- read them directly from the config text file:  0 


When doing unit-testing of a single module (NOT the "main" module) 
and the module uses one option, e.g. input filename: 
- unit-test framework provides own "simplified" config functionality: 0 
- unit-test framework invokes main app's config functionality:  1 


Do you use: 
- optparse: 1 
- getopt: 0 
- others? 


Please list any config management "design pattern" 
(usable in Python) and add a count if you use it - thanks. 
- 
- 
2

你經常讀通過配置選項: - GUI選項 命令行/ - 一個配置文本文件

兩個。我們使用Django的settings.py和logging.ini。我們還使用命令行選項和參數來更改最頻繁的選項。

怎麼辦多個模塊/對象訪問這些選項?

  • settings.py; logging.ini - 不能說。
  • 我們的選擇是私有的主程序,並可以用於構建
    函數的參數或對象初始化。

[共享optparse選項是在脖子上一個很大的痛苦和不必要的結合了很多的東西放到一個無法驗證的混亂。]

當進行單個模塊的單元測試(不是「主」模塊): (例如讀選項指定輸入文件名)

[I無法解析的問題。我想這是]

答案是「你怎麼測試的時候有選擇嗎?」 - 我們不知道。由於只有主要方法解析命令行選項,因此沒有其他模塊,函數或類對命令行選項有任何概念。沒有這個模塊「需要5個配置選項中的1個」模塊的類(或函數)具有普通的參數,就是這樣。

我們只使用optparse