我正在玩Python,開發一個專注於文本處理的簡單應用程序。爲此,我需要用戶添加一些信息並配置一些變量(如果需要)。所以我在想有一個配置文件。我一直在閱讀很多關於它(ini文件和configparser主要),但我有一些問題:用Python處理配置文件
- 哪裏是放置配置文件的最佳位置?這是否正確使用appdirs?
- 由於我需要默認值,我應該如何處理?我應該在首次發佈時生成它嗎?有沒有任何項目這樣做?我想看看,但我沒有找到任何。
我正在玩Python,開發一個專注於文本處理的簡單應用程序。爲此,我需要用戶添加一些信息並配置一些變量(如果需要)。所以我在想有一個配置文件。我一直在閱讀很多關於它(ini文件和configparser主要),但我有一些問題:用Python處理配置文件
爲此使用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'}}
我把我的配置文件與應用程序,更容易追捕他們。
至於格式,有a nice wrietup about the various formats這將幫助你打定主意。我已經滿JSON,具有_
進入徵求意見,通過json.load()
所有加載:
[
{
"_": "the name of the game",
"name": "Cluedo"
},
{
"_": "number of players",
"number_of_players": 8
}
]
我personnaly喜歡當配置文件是在同一目錄下的程序(或子文件夾)。 我覺得很煩人,不得不去深處尋找它們。 – Morb
@Morb也許我在說一些愚蠢的事情,但是,當我使用pip安裝應用程序時會發生什麼?我將有一個腳本來啓動它,但配置文件在哪裏? –
對不起,我說不清,我從來沒用過pip – Morb