2015-04-28 74 views
1

我正在玩Python,開發一個專注於文本處理的簡單應用程序。爲此,我需要用戶添加一些信息並配置一些變量(如果需要)。所以我在想有一個配置文件。我一直在閱讀很多關於它(ini文件和configparser主要),但我有一些問題:用Python處理配置文件

  • 哪裏是放置配置文件的最佳位置?這是否正確使用appdirs
  • 由於我需要默認值,我應該如何處理?我應該在首次發佈時生成它嗎?有沒有任何項目這樣做?我想看看,但我沒有找到任何。
+0

我personnaly喜歡當配置文件是在同一目錄下的程序(或子文件夾)。 我覺得很煩人,不得不去深處尋找它們。 – Morb

+0

@Morb也許我在說一些愚蠢的事情,但是,當我使用pip安裝應用程序時會發生什麼?我將有一個腳本來啓動它,但配置文件在哪裏? –

+0

對不起,我說不清,我從來沒用過pip – Morb

回答

3

爲此使用appdirs是否正確?

如果您打算在不同的平臺上安裝應用程序,使用appdirs在我看來似乎是一個合適的選擇。

由於我需要默認值,我該如何處理?

默認配置,假設它不會根據安裝,用戶,平臺等而改變......將它放在應用程序目錄中是有意義的。 否則,請使用appdirs。至於格式,如果配置文件只是由應用程序改變(而不是由用戶直接改變,例如在文本編輯器中),那麼就使用你感覺更舒適的格式。在一臺機器的眼中,它們之間通常沒有太大的區別。儘管某些解決方案可能比其他解決方案更適合某種解決方案,但您會發現自己的解決方案非常快。什麼是不夠好,無論是.ini.json.yml等..

現在,如果你打算在用戶手動更改CONFIGS,那麼你最好有一個很簡單的格式,其中餐間的加速潛力去可以減少。在這種情況下,我通常會用yaml這個結構非常簡單。它被解析爲python dict,類型通常被正確推斷。

# user_config.yml 
# Some example configuration 

paulo: 
    age: 25 
    city: Berlin 

david: 
    age: 29 
    city: Oviedo 

# app.py 
# loading the configuration 
import yaml 

user_config = yaml.load(open('user_config.yml', 'r')) 
user_config 
{'david': {'age': 29, 'city': 'Oviedo'}, 
'paulo': {'age': 25, 'city': 'Berlin'}} 
0

我把我的配置文件與應用程序,更容易追捕他們。

至於格式,有a nice wrietup about the various formats這將幫助你打定主意。我已經滿JSON,具有_進入徵求意見,通過json.load()所有加載:

[ 
    { 
     "_": "the name of the game", 
     "name": "Cluedo" 
    }, 
    { 
     "_": "number of players", 
     "number_of_players": 8 
    } 
]