[Python] parsing config file
Daniele Varrazzo
piro a develer.com
Ven 22 Nov 2013 20:55:12 CET
On 2013-11-22 17:18, Roberto Preziusi wrote:
> Ciao,
> avrei bisogno di effettuare il parsing di un file così composto:
>
> ...
> address-set ABC_DEF {
> address ABC_PRO_1;
> address BCD_PRO_IP2;
> address AAA_ABC;
> address FFF_CHCD;
> ....
> }
> ...
Sembra abbastanza facile da fare con le espressioni regolari. La
soluzione corretta è scrivere un parser con un generatore che parta
dalla vostra grammatica (ply, pyparsing).
> All'interno dello stesso file ho altri campi "address-set" con altri
> nomi
> diversi da "ABD_DEF"
>
> Vorrei creare una lista con dentro tutti gli address del mio
> address-set
> address-list = ["ABC_PRO_1", "BCD_PRO_IP2", ... ]
>
> Qualcuno sa dirmi se ci sono librerie in python che fanno questo o se
> c'è
> un modo veloce x farlo ?
>
> Altra domanda:
Domanda mia: ve lo siete inventati voi quel formato?
Perchè state reinventando l'acqua calda: non dovreste scrivere un nuovo
parser se potete usare un linguaggio diverso. Quale? Ce ne sono a
tonnellate pronti per essere usati in Python:
1. python stesso. Se il formato è Python basta importarlo per avere
tutti gli oggetti, ed avete anche già pronti modularità (usando import),
potete usare espressioni, variabili...
address_set("ABC_DEF",
address("ABC_PRO_1"),
address("BCD_PRO_IP2"),
...)
2. un file ini sembra più che sufficiente, non so se si possono fare
ripetizioni. Il parser è nella stdlib.
[ABC_DEF]
address: ABC_PRO_1
address: BCD_PRO_IP2
3. YAML è facilissimo da editare a mano
4. JSON pure andrebbe più che bene, meno editabile di YAML ma il parser
è nella stdlib.
> sarebbe piu' facile effettuare la stessa operazione se avessi la
> possibiltà
> di esportare questa conf in xml ?
5. XML se proprio ti diverti ad overingegnerizzare per nessun risultato
apprezzabile.
-- Daniele
Maggiori informazioni sulla lista
Python