2012-06-04 26 views
2

A「設置文件」將是那裏的東西,如「背景顏色」,「執行速度」,「X的數」定義的文件。目前,我將它作爲一個單獨的setting.py文件實施,我在開始時導入該文件。有人告訴我,我應該使它成爲settings.ini文件,但我不明白爲什麼!謹慎澄清,最佳選擇是什麼?如何實現的Python程序中設置文件

+0

如果你決定去了'.ini'路線,看看http://docs.python.org/library/configparser.html – lvc

+0

我不認爲存儲配置的詳細信息是一個不好的做法,因爲這樣。一些衆所周知的實用工具如IPython [1]和rope [2]使用python文件來存儲配置細節。 1. http://ipython.org/ipython-doc/rel-0.12.1/config/overview.html#configuration-objects-and-files 2. http://rope.sourceforge.net/overview.html #ropeproject文件夾 – sateesh

回答

4

沒有最佳解決方案;這是一個優先選擇的問題。*

通常情況下,設置不需要用圖靈語言來表達:它們通常只是一堆標誌和選項,有時候是字符串和數字等。有一個settings.py文件(雖然非常非傳統)將是,如果最終用戶需要編寫代碼來生成非常深奧的配置(例如遊戲地圖)。這將與shell腳本.bashrc風格的文件非常相似。

但同樣,在計劃99.9%,設置往往只是一堆標誌和選項,有時字符串和數字等。它的優良它們存儲爲JSON或XML。它還可以輕鬆地對設置執行反射:例如,以樹狀方式自動列出它們,或自動創建描述外的GUI。

(也可能是一個(不太可能)的安全問題,如果你允許人們通過修改設置文件將代碼注入?)

*編輯:沒有雙關語意...

2

一將設置文件作爲Python模塊的問題在於它可以包含在導入時將執行的代碼。這可能允許將惡意代碼插入到您的程序中。

3

爲什麼從主代碼庫中分離出配置文件是一個好主意。當然這取決於你的用例,你應該評估你的用例。

  1. 配置可由不懂編程語言的最終用戶管理。將配置分解並使用簡單的ini文件使用簡單的鍵值對來配置參數更有意義。

  2. 配置因安裝環境而異。您的代碼在多個環境中運行,並且它們都使用不同的配置。通過在這些環境中安裝單獨的配置文件和相同的源代碼來維護這種情況非常容易。

  3. 有包經理們知道什麼是一個配置文件,什麼是源文件。它們是智能的,不會覆蓋版本升級等任何更改的配置。因此,您不必擔心在軟件包版本升級後重置配置參數。例如,您使用默認的配置文件運送您的產品。用戶微調了幾個參數。您運送了另一個版本的軟件包。用戶不應該期望版本升級後重置配置。

相關問題