[Python] parsing config file
Giovanni Porcari
giovanni.porcari a softwell.it
Mar 26 Nov 2013 14:22:08 CET
Il giorno 26/nov/2013, alle ore 12:23, Daniele Varrazzo <piro a develer.com> ha scritto:
> On 2013-11-24 08:32, Giovanni Porcari wrote:
>> Il giorno 24/nov/2013, alle ore 02:33, Daniele Varrazzo
>> <piro a develer.com> ha scritto:
>
>>> Ma un file di configurazione: ma che ci vuole sax per parsare un paio di fetenti coppie chiave valore? Ancora a pensare solo per un secondo se un valore logico lo devi scrivere come 1, true oppure v? C'è di meglio, no?
>
>> <db>
>> <development implementation="postgres" host="localhost" port='5432'
>> password="mypassword" user="myuser"/>
>
>> Io ad esempio lo leggo così:
>>
>> config=Bag(myfile)
>> development_port=config('db.development?port')
>>>>> '5432'
>
> Esattamente quello che intendevo: lo leggi male. L'interfaccia è fica e comodissima, ne sono certo, ma l'informazione nel file è incompleta. Passa la stringa "5432" ad una funzione socket e quella esploderà:
>
> >>> s.listen(('localhost', '5432'))
> TypeError: an integer is required
>
> Tra l'altro "5432" non è chiaramente una porta valida: è maggiore di 65535:
>
> >>> "5432" > 65535
> True
>
> Ad un file di configurazione si chiedono poche cose. Tra queste secondo me sono abbastanza importanti:
>
> - essere editabile a mano
> - essere fortemente tipizzato
>
> e ad xml mancano entrambe.
Beh Daniele non volevo complicare le cose tirando in ballo anche la tipizzazione.
Ma hai ragione e infatti nel nostro uso abituale abbiamo modo di tipizzare
facilmente gli attributi usando il suffisso '::'+tipo mentre volendo tipizzare
il contenuto usiamo l'attributo 'riservato' _T.
In questo caso l'esempio completo sarebbe stato port="5432::L"
invece di port="5432".
Mi rendo conto che possono sembrare soluzioni 'acrocchiate' ma nella nostra
esperienza la leggibilità e la flessibilità sono buone e il formato
e semplice da spiegare e molto flessibile.
Usando un parser nostro possiamo usare tutti i tipi che vogliamo e il contenitore
che risulta è molto facile da usare e si mappa immediatamente ad un tree
in una pagina web. Quindi la pigrizia ci fa amare XML magari il dialetto nostro
che è per artigiani pigri ;)
G
Maggiori informazioni sulla lista
Python