[Python] parsing config file
Manlio Perillo
manlio.perillo a gmail.com
Mar 26 Nov 2013 15:03:37 CET
On 26/11/2013 14:36, Giovanni Porcari wrote:
>
> Il giorno 26/nov/2013, alle ore 12:43, Manlio Perillo <manlio.perillo a gmail.com> ha scritto:
>
>> Gli unici formati di file che conosco in cui il tipo è manifesto (o meglio, in cui il tipo è specificato da chi scrive il file di configurazione) sono YAML e JSON. La differenza tra YAML e JSON è che il primo è estendibile.
>
>
> Il difetto maggiore che trovo in JSON è la mancata tipizzazione
> di date e datetime.
Si, questa è una limitazione abbastanza irritante.
Io infatti per i files di configurazione uso YAML, con un decoder custom
che implementa diverse estensioni (come ad esempio, specificare un file,
directory, un locale, un engine sqlalchemy, pkg resources, e così via).
Ecco un esempio:
paths:
template: &template !pkg_resource_path app:templates
static: !pkg_resource_path app:static
flatpages: &flatpages !pkg_resource_path app:flatpages
media: &media !make_dir [media]
tmp: &tmp !make_dir [tmp]
template_cache: &template_cache !make_dir [*tmp, mako_modules]
defs:
charset: &charset utf-8
lookup: &lookup !make_template
directories: [*template, *flatpages]
module_directory: *template_cache
output_encoding: *charset
default_filters: [unicode, h, trim]
engine: &engine !make_engine
url: postgresql://x:y@localhost/z
echo: false
python:
logger: !make_global_logger
filename: "/tmp/app.log"
level: DEBUG
Il decoder produce un dizionario a cui si può accedere, ad esempio, con:
conf['python.logger'], conf['paths.template'] e così via.
> [...]
Ciao Manlio
Maggiori informazioni sulla lista
Python