[Python] parsing config file

Giovanni Porcari giovanni.porcari a softwell.it
Dom 24 Nov 2013 09:32:32 CET


Il giorno 24/nov/2013, alle ore 02:33, Daniele Varrazzo <piro a develer.com> ha scritto:

> On 2013-11-23 06:30, Giovanni Porcari wrote:
>> Il giorno 23/nov/2013, alle ore 07:08, Matteo Boscolo
>> <matteo.boscolo a boscolini.eu> ha scritto:
>> 
>>> Il 22/11/2013 20:55, Daniele Varrazzo ha scritto:
>>>> 5. XML se proprio ti diverti ad overingegnerizzare per nessun risultato apprezzabile.
>>> +1
>>> 
>> 
>> Povero XML, a me sembra tanto comodo e facile da usare.
>> Ma sarà perché son vecchio ;)
> 
> Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono strumenti utili per certi compiti ed altri utili per altri. Pochi mesi fa ho scritto un sistema di importazione ed esportazione di una struttura enorme da postgres (la gestione contabile di un nostro programma, centinaia di mb al mese di partita doppia): per quello xml è stato perfetto. Struttura modellata come si deve:meglio che in Json. Json o Yaml mi avrebbero costretto a caricare tutto in memoria, con sax il caricamento è progressivo. Semplicemente lo strumento giusto.
> 
> 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?
> 
> -- Daniele
> 


Posso essere d'accordo su tutto.

Infatti il mio commento era più che altro relativo al +1 di Matteo.
Il mio punto di vista è che se comunque usi già XML in altre parti di un progetto
e hai già gli strumenti e la consuetudine mentale, impiegare XML anche per
compiti banali non è poi così male.

Se ad esempio all' interno di un file di configurazione trovi :

<db>
  <development implementation="postgres" host="localhost" port='5432' password="mypassword" user="myuser"/>
  <external implementation="postgres" host="myhost.myorg.my" port='5432' password="mypassword2" user="myuser2"/>
  <production implementation="oracle" host="rich.org.com" port='11211' password="orac" user="oracser"/>
</db>

a me sembra abbastanza compatto e leggibile. 

Poi dipende da come lo leggi. 

Io ad esempio lo leggo così:

config=Bag(myfile)
development_port=config('db.development?port')
>>> '5432'

ma anche:
configured_db=config['db'].keys()
>>> ['development','external','production']


Quindi direi che, come sempre, tutto è relativo alle personali
esperienze, preferenze, idiosincrasie e agli strumenti che si usano :)

Ciao

G






Maggiori informazioni sulla lista Python