Re: [Python] parsing config file
Il giorno lun, 25/11/2013 alle 13.12 +0100, Pietro Battiston ha scritto: Il giorno dom, 24/11/2013 alle 10.06 +0100, Dario Bertini ha scritto: [...] XML, Json, Yaml sono solo formati... non costringono a gestire il file in un modo particolare https://pypi.python.org/pypi/ijson/ O no... letto ora questa email... e giusto ieri mattina mi ero scritto https://github.com/toobaz/redis-dump-load/blob/incremental_loading/incremental_json.py dopo avere letto inutilmente http://stackoverflow.com/questions/444380/is-there-a-streaming-api-for-json ... Il giorno lun, 25/11/2013 alle 13.39 +0100, Dario Bertini ha scritto: FWIW, era il primo risultato su google, cercando event parsing json python Facendo giusto per curiosità un benchmark mi sono preso una piccola rivincita... ed a quel punto ne ho fatto una mini libreria: http://pietrobattiston.it/jsaone ciao Pietro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
congrats! ho dato un'occhiata a json_load_test.py curioso di vedere il benchmark, e però non c'è la stringa json da passargli in input per rendere il tutto più riproducibile non sarebbe meglio aggiungere anche il file che gli hai passato in input? (oppure c'era ma me lo sono perso?) (ovviamente, fare fuzz testing sarebbe la ciliegina sulla torta :P ... avendone tempo sarei curioso di farlo, visto che con python non l'ho mai fatto) -- xmpp: berda...@gmail.com bitmessage: BM-2cTYXfGiSTsnx3righ6aHcJSWe4MV17jDP gpg fingerprint: 3F8D53518012716C4EEF7DF67B498306B3BF75A0 (used just for signing commits) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
Il giorno sab, 14/12/2013 alle 16.22 +, Dario Bertini ha scritto: congrats! ho dato un'occhiata a json_load_test.py curioso di vedere il benchmark, e però non c'è la stringa json da passargli in input No, va usato con un file json esistente, i testi li ho fatti con un dump di database redis con cui sto lavorando. per rendere il tutto più riproducibile non sarebbe meglio aggiungere anche il file che gli hai passato in input? (oppure c'era ma me lo sono perso?) Sì, hai ragione... solo che era un file da 174 MB (e d'altra parte i risultati mi interessano principalmente per file grossi). Però potrei inserire del codice che genera al volo una stringa e la passa come Stream(). TODO. (ovviamente, fare fuzz testing sarebbe la ciliegina sulla torta :P ... avendone tempo sarei curioso di farlo, visto che con python non l'ho mai fatto) Sarei molto curioso anche io! Confesso che fino ad ora ho solo verificato che il mio codice funzionasse su svariati json ben formati, e trovasse lo stesso numero di elementi... insomma, nel setup.py ho messo un meritatissimo 'Development Status :: 4 - Beta' ;-) ciao Pietro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
On 2013-11-25 15:34, Roberto Preziusi wrote: Il giorno 22 novembre 2013 20:55, Daniele Varrazzo p...@develer.com ha scritto: 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: No, non ce lo siamo inventati noi. E' la conf di un device di rete (Juniper) che purtroppo bisogna parsare per salvare questa conf su db.. Noto che è possibile avere output così o XML e quindi vi chiedevo quale fosse il metodo piu' simpatico e veloce per parsare l'output senza troppe complicazioni. Se è del tutto indifferente per voi usare quel formato o xml, con xml ed etree non è un problema. Adesso cerco una regexp buona per ora ho trovato solo questo modo qui con sed: sed -n '/address-set ABC_DEF/,/}' myfilename.conf che non so come implementare con python. idee? Non c'è nessuna difficoltà: se si vuole parsarlo con le regexp bisogna solo conoscere le regexp. Non ci vogliono idee. Poi provero' a vedere anche come farlo via xml usando qualche libreria in python e quando avro' imparato in entrambi i modi.. deciderò :) Per quello usa questo: http://docs.python.org/2/library/xml.etree.elementtree.html -- Daniele ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
On 2013-11-24 08:32, Giovanni Porcari wrote: Il giorno 24/nov/2013, alle ore 02:33, Daniele Varrazzo p...@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. -- Daniele ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
On 26/11/2013 12:23, Daniele Varrazzo wrote: [...] Ad un file di configurazione si chiedono poche cose. Tra queste secondo me sono abbastanza importanti: - essere editabile a mano - essere fortemente tipizzato Il formato .ini, disponibile in ConfigParser, certamente non è tipizzato, dato che il tipo (bool, int, float, boolean) deve essere specificato da chi legge il file. 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. Volendo, anche XML può essere tipizzato, se ci attacchi uno schema. Ma non sono a conoscenza (e non ho voglia di cercare, dato che non è molto pratico) di parser scritti in Python che leggono tale schema e convertono il testo XML nel tipo specificato. Ciao Manlio ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
Il giorno 26/nov/2013, alle ore 12:23, Daniele Varrazzo p...@develer.com ha scritto: On 2013-11-24 08:32, Giovanni Porcari wrote: Il giorno 24/nov/2013, alle ore 02:33, Daniele Varrazzo p...@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 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
Il giorno 26/nov/2013, alle ore 12:43, Manlio Perillo manlio.peri...@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. Il che mi costringe a mettere degli Encoder specializzati in python del tipo: class JsonEncoderJS(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime.time): return '%s::H' %str(obj) elif isinstance(obj, Decimal): return str(obj) elif isinstance(obj, datetime.datetime): return '%s::DH' %str(obj) elif isinstance(obj, datetime.date): return '%s::D' %str(obj) return json.JSONEncoder.default(self, obj) Quindi anche in questo caso usando la sintassi col ::. Ho preso anche in esame serpent (https://pypi.python.org/pypi/serpent) ma ormai avevo già le mie porcatine (porcatine ovvero da 'Porcari') funzionanti e la pigrizia mi ha fatto restare col mio acrocchio XML. G ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
On 26/11/2013 14:36, Giovanni Porcari wrote: Il giorno 26/nov/2013, alle ore 12:43, Manlio Perillo manlio.peri...@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 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
Il giorno dom, 24/11/2013 alle 10.06 +0100, Dario Bertini ha scritto: 2013/11/24 Daniele Varrazzo p...@develer.com: 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. XML, Json, Yaml sono solo formati... non costringono a gestire il file in un modo particolare https://pypi.python.org/pypi/ijson/ O no... letto ora questa email... e giusto ieri mattina mi ero scritto https://github.com/toobaz/redis-dump-load/blob/incremental_loading/incremental_json.py dopo avere letto inutilmente http://stackoverflow.com/questions/444380/is-there-a-streaming-api-for-json ... Pietro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
FWIW, era il primo risultato su google, cercando event parsing json python ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
Il giorno 22 novembre 2013 20:55, Daniele Varrazzo p...@develer.com ha scritto: 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: No, non ce lo siamo inventati noi. E' la conf di un device di rete (Juniper) che purtroppo bisogna parsare per salvare questa conf su db.. Noto che è possibile avere output così o XML e quindi vi chiedevo quale fosse il metodo piu' simpatico e veloce per parsare l'output senza troppe complicazioni. Adesso cerco una regexp buona per ora ho trovato solo questo modo qui con sed: sed -n '/address-set ABC_DEF/,/}' myfilename.conf che non so come implementare con python. idee? Poi provero' a vedere anche come farlo via xml usando qualche libreria in python e quando avro' imparato in entrambi i modi.. deciderò :) Grazie a tutti! -- Preziusi Roberto ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
usa XML in questo caso, lascia perdere le iregular exception ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
Il giorno 25 novembre 2013 16:34, Roberto Preziusi roberto.prezi...@gmail.com ha scritto: sed -n '/address-set ABC_DEF/,/}' myfilename.conf avevo perso un pezzo, il cmd è : sed -n '/address-set ABC_DEF/,/}/p' myfilename.conf bye -- Preziusi Roberto ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
Il giorno lun, 25/11/2013 alle 13.39 +0100, Dario Bertini ha scritto: FWIW, era il primo risultato su google, cercando event parsing json python La parte event non mi era passata per la testa! Pietro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
2013/11/25 Roberto Preziusi roberto.prezi...@gmail.com No, non ce lo siamo inventati noi. E' la conf di un device di rete (Juniper) che purtroppo bisogna parsare per salvare questa conf su db.. Strettamente parlando non e' che *devi* parsarlo per metterlo sul DB. A seconda di quello che vuoi farci, potresti semplicemente sbatterlo nel DB. E.g., se il tuo scopo e' versionare la configurazione o essere in grado di replicarla, la faccenda basta. Devi vedere quanto ti costa fare un parsing vero e proprio (e gestire l'in e out dal db -- e.g., opzioni nella conf cui non hai pensato quando fatto lo schema e compagnia). Ecco diciamo che io, fino a prova contraria lo schiafferei nel db cosi' come e'. Leggo pero' che vuoi proprio processarlo. Direi che un parser e' la cosa corretta. Non ci vuole molto per scriverlo, il linguaggio *sembra* molto semplice. Guarda anche se qui non ci fosse un parser bello e pronto da qualche parte: https://pypi.python.org/pypi/junos-multi-command/ -- . ..: -enrico- ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
Il giorno 24/nov/2013, alle ore 02:33, Daniele Varrazzo p...@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.bosc...@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 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
2013/11/24 Daniele Varrazzo p...@develer.com: 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. XML, Json, Yaml sono solo formati... non costringono a gestire il file in un modo particolare https://pypi.python.org/pypi/ijson/ se questa è la miglior ragione per usare XML, mi sa che continuerò ad evitarlo (tranne quando costretto) per mlto tempo :) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
On 24 Nov 2013 02:33, Daniele Varrazzo p...@develer.com wrote: P.s. inviato col cellulare: perdonate il bottom posting e la cancellazione delle parti non utili del messaggio. Ahahahaha!!! Ciao. Marco. PS: idem. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
Il 24/nov/2013 02:33 Daniele Varrazzo p...@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.bosc...@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? In realtà c'è un altro caso d'uso ed è quello dei dati documentali. Ossia xlm come markup-language semantico per un documento. Mi pare anzi che questo obiettivo sia il primo per cui xml è nato. Prima dell' xml c'era sgml da cui l'xml ha preso un sacco di concetti (es. quello di dtd). Xml rispetto ad sgml ha introdotto una cosa fondamentale: unicode. Cosa che ne ha decretato la rapida adozione nei sistemi documentali in tutti i casi in cui si voleva un contenuto fortemente slegato dalla formattazione. Da cui il concetto di xslt e la pubblicazione in vari formati grazie ad un foglio di stile xsl. È ancora pesantemente usato come formato di interscabio per traduttori umani e sistemi automatici (es. Translation Memory) nelle forme xliff e tmx. Usare invece xml come formato di scambio dati (anche non documentali) tra applicativi è stata un idea successiva legata a soap e xml-rpc. Mi fermo qui perché sto andando ot. Infatti la domanda iniziale non si riferisce agli ambiti che ho descritto. Era giusto per condividere i miei due cents sulle ragioni d'essere dell'xml. Marco ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
On 24/11/2013 02:33, Daniele Varrazzo wrote: [...] 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. No, aspetta. Qui non è colpa del formato. E' colpa delle implementazioni del cavolo, che non permettono di fare operazioni efficienti. Non mi sembra ci sia nulla, in JSON o YAML, che impedisca di implementare un parser/generatore incrementali. La prima cosa che mi ha restituito google: http://stackoverflow.com/questions/444380/is-there-a-streaming-api-for-json [...] Ciao Manlio ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
On 2013-11-23 06:30, Giovanni Porcari wrote: Il giorno 23/nov/2013, alle ore 07:08, Matteo Boscolo matteo.bosc...@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 P.s. inviato col cellulare: perdonate il bottom posting e la cancellazione delle parti non utili del messaggio. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] parsing config file
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; } ... 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: sarebbe piu' facile effettuare la stessa operazione se avessi la possibiltà di esportare questa conf in xml ? saluti ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
Il giorno 22 novembre 2013 18:18, Roberto Preziusi roberto.prezi...@gmail.com ha scritto: 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; } ... 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: sarebbe piu' facile effettuare la stessa operazione se avessi la possibiltà di esportare questa conf in xml ? beh, decisamente. Se esporti in xml puoi andare di lxml con gli xpath, iteri sugli elementi che ti interessano e prendi i valori. Punto. Altrimenti con la struttura che hai accennato, mi sa che il modo più semplice è usare regular-expression riga per riga però ti devi mantenere un minimo di stato (es. sono dentro una struttura address-set, etc.) ciao, Marco ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
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 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
Il 22/11/2013 20:55, Daniele Varrazzo ha scritto: 5. XML se proprio ti diverti ad overingegnerizzare per nessun risultato apprezzabile. +1 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] parsing config file
Il giorno 23/nov/2013, alle ore 07:08, Matteo Boscolo matteo.bosc...@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 ;) G ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python