2012-11-17 18 views
5

我正在尋找一個python配置庫,它將多個文本配置文件合併爲單個對象,就像json一樣。Python配置庫

有人知道一個好嗎?

回答

5

我寫的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 package index
  2. Source on github
  3. Documentation
4

標準配置文件解析器是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)