2010-08-06 83 views
22

哪個更適合爲Python程序,內置模塊(ConfigParser)或獨立項目(ConfigObj)創建設置文件?什麼更好,ConfigObj或ConfigParser?

+1

另外,YAML還有什麼好處? – Apocryphon 2010-08-07 09:13:01

+2

「更好」取決於上下文。簡單,複雜?什麼樣的設置? – detly 2010-08-10 01:42:49

+3

Apocryphon:我可以建議你編輯這樣的問題:「ConfigParser,ConfigObj,YAML的con和pro是什麼」 – 2011-10-04 09:55:30

回答

4

到目前爲止,我發現ConfigParser在任何時候都可以使用。另外,它是一個包含電池,而不是第三方庫。

雖然我不得不承認,但ConfigObj文檔中的代碼示例使ConfigParser在比較中看起來非常糟糕。對於一個劇烈操縱.ini文件的腳本,我會更喜歡它。

+0

我同意。我發現我在ConfigParser中缺少的功能在ArgParse中,它自2.7開始也是一個包含的電池。我有python 2.7可用,我已經遷移到ArgParse。 – Hernan 2011-08-31 09:35:03

17

我最近從configparser切換到configobj,我很高興這樣做。

對我來說,最大的區別是configobj的validator。它讓我很容易/簡潔地(1)爲每個條目定義類型和可接受的值,並(2)設置默認值。

這兩個功能爲我節省了很多代碼,並防止了很多錯誤。另外,就我的代碼的複雜性而言,使用configobj確實沒有額外的開銷,並且庫很小。

+0

爲了記錄,我找到了最好的介紹configobj是[本教程](http://www.voidspace.org.uk/python/articles/configobj.shtml) - 它有點過時,但解釋了基本操作和哲學比文件更好,恕我直言。 – 2015-12-18 23:49:32

5

根據你的Python版本,這是否會回答你的問題可能是有爭議的,但在ConfigParser和ConfigObj的簡短介紹後,我決定使用ConfigParser的Python 3版本configparser。 There’s also a backported version on PyPI.

ConfigParser對我來說看起來很麻煩,甚至可以說我是說unpythonic,而且用ConfigObj我遇到了一個列表中的深奧問題(我寧願能夠垂直對齊它們,因爲我會變得很長) ,而且最近的版本發佈超過兩年前並沒有幫助。然而,configparser的API看起來像ConfigObj那樣漂亮(雖然不像功能豐富),當我們轉向Python 3時,我可以輕鬆切換到內置版本。

順便說一下,它迄今爲止效果很好。