7

複数のテキスト構成ファイルをjsonのように単一のオブジェクトにマージするpython構成ライブラリを探しています。

誰かいいの知ってる?

4

2 に答える 2

6

この目的のために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でフォークできます

リンク:

  1. Python パッケージ インデックス
  2. github のソース
  3. ドキュメンテーション
于 2012-11-17T22:57:45.940 に答える
5

標準の構成ファイル パーサーは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)
于 2012-11-17T17:09:34.160 に答える