Python配置文件作为带有继承的JSON



我正在寻找可以轻松从JSON文件返回配置对象的库,而不仅仅是读取JSON文件并将其返回 - 将继承应用于各节。类似于旧 *.ini或zend_config_json(来自PHP Zend Framework)

示例:

{
    "production":{
        "phpSettings":{
            "display_startup_errors": false,
            "display_errors": false
        },
        "includePaths":{
            "library": "APPLICATION_PATH/../library"
        },
        "bootstrap":{
            "path": "APPLICATION_PATH/Bootstrap.php",
            "class": "Bootstrap"
        },
        "appnamespace": "Application",,
        "resources":{
            "frontController":{
                "controllerDirectory": "APPLICATION_PATH/controllers",
                "moduleDirectory": "APPLICATION_PATH/modules",
                "params":{
                    "displayExceptions": false
                }
            },
            "modules":[],
            "db":{
                "adapter": "pdo_sqlite",
                "params":{
                    "dbname": "APPLICATION_PATH/../data/db/application.db"
                }
            },
            "layout":{
                "layoutPath": "APPLICATION_PATH/layouts/scripts/"
            }
        }
    },
    "staging":{
        "_extends": "production"
    },
    "testing":{
        "_extends": "production",
        "phpSettings":{
            "display_startup_errors": true,
            "display_errors": true
        },
    },
    "development":{
        "_extends": "production",
        "resources":{
            "frontController":{
                "params":{
                    "displayExceptions": true
                }
            }
        }
    }
}

作为返回,我将拥有其中一个部分,IT部分具有" _EXTEND"属性,这将是扩展的部分(合并/更新)的此部分。

是某些库已经这样做还是python社区更喜欢以不同的方式处理继承?

请看一下PyConfigini,它是在zend_config_ini上模拟的配置文件解析器

检查这个

cfg = JSONConfigParser()
cfg.read_string("""
[section]
number = 3.141592654
dictionary = {"key": "value"}
list = [1,
        2,
        3]
nested = {"list": [1,2,3]}
true = true
none = null
[DEFAULT]
# settings in the default section are inherited
# by all other sections.
default-setting = "default"
""")
# read a setting
cfg.get("section", "number")
# read a setting using index notation
cfg["section"]["true"]
# settings inherited from DEFAULT
cfg.get("section", "default-setting")

在这里继承

# settings inherited from DEFAULT
cfg.get("section", "default-setting")

参考:https://pypi.python.org/pypi/json-config-parser/0.1.2

最新更新