複数のテキスト構成ファイルをjsonのように単一のオブジェクトにマージするpython構成ライブラリを探しています。
誰かいいの知ってる?
この目的のためにpymlconfを作成しました。構成構文はyamlです。
例えば:
構成ファイル:
#app/conf/users/sites.mysite.conf:
name: mysite.com
owner:
name: My Name
phone: My Phone Number
address: My Address
#app/conf/admin/root.conf:
server:
version: 0.3a
sites:
admin:
name: admin.site.com
owner:
name: Admin Name
phone: Admin Phone Number
address: Admin Address
#app/conf/admin/server.conf:
host: 0.0.0.0
port: 80
#../other_path/../special.conf:
licence_file: /path/to/file
log_file: /path/to/file
#app/src/builtin_config.py:
_builtin_config={
'server':{'name':'Power Server'}
}
OR:
_builtin_config="""
server:
name: Power Server
"""
次に、単一行の使用法を見てください。
from pymlconf import ConfigManager
from app.builtin_config import _builtin_config
config_root = ConfigManager(
_builtin_config,
['app/conf/admin','app/conf/users'],
'../other_path/../special.conf')
設定エントリを取得しています:
# All from app/conf/users/sites.mysite.conf
print config_root.sites.mysite.name
print config_root.sites.mysite.owner.name
print config_root.sites.mysite.owner.address
print config_root.sites.mysite.owner.phone
# All from app/conf/admin/root.conf
print config_root.sites.admin.name
print config_root.sites.admin.owner.name
print config_root.sites.admin.owner.address
print config_root.sites.admin.owner.phone
print config_root.server.name # from _builtin_config
print config_root.server.version # from app/conf/admin/root.conf
print config_root.server.host # from app/conf/admin/server.conf
print config_root.server.port # from app/conf/admin/server.conf
print config_root.licence_file # from ../other_path/../special.conf
print config_root.log_file # from ../other_path/../special.conf
これで問題は解決したようですが、 githubでフォークできます
リンク:
標準の構成ファイル パーサーはConfigParser
、標準の Python ディストリビューションの一部です。ここですべてを読んでください:
http://docs.python.org/2/library/configparser.html
複数のファイルもサポートしています。
素晴らしく使いやすい:
import ConfigParser
config = ConfigParser.ConfigParser()
config.read('example.cfg')
# Retrieve a variable
myvar = config.get("sectionName", "variableName", 0)