[Python] Python web messaggi in Post e link a file in differenti directory

Daniele San Giovanni sangiovanni.daniele a gmail.com
Ven 7 Giu 2013 15:04:08 CEST


Ci sarebbe ConfigParser che sarebbe ottima perchè permette di impostare il
link al file di configurazione specifico nel momento in cui viene
istanziato l' oggetto.

Il problema è che i file di configurazione contengono una cosa del tipo:

config_charts_daily = [
        {
            "general" : {
                'label' : 'Potenza Attiva',      #Etichetta associata alla
curva
                'y_axis_umis': 'W',              #Unità di misura per l'
asse y
                },
            "csv" : {                            #Le colonne vengono
numerate a partire da 0
                'x_csv_column_number' : 0,       #Numero colonna csv da cui
prelevare i dati da riportare sul grafico (asse x)
                'y_csv_column_number' : 3,       #Numero colonna csv da cui
prelevare i dati da riportare sul grafico (asse y)
                'y_factor' : 0.01                #Fattore moltiplicativo
per l' asse y.
                }
        }
    ]

Stamattina ho fatto un po' di ricerche su come poter gestire questa
situazione ma poi ho abbandonato.
Adesso sto mettendo tutto in una classe in modo da selezionare di volta in
volta la configurazione desiderata.
Non è l' ideale ma provvisoriamente si potrebbe utilizzare.
L' eval prendendo le dovute precauzioni può anche essere utilizzato.



Il giorno 07 giugno 2013 12:22, enrico franchi
<enrico.franchi a gmail.com>ha scritto:

> 2013/6/6 Daniele Varrazzo <piro a develer.com>:
>
> > Spiegami la differenza tra import ed eval.
>
> Direi che la questione principale e' che mentre ci vuole
> un'atteggiamento pro-attivo da parte dello sviluppatore per creare un
> problema con import [0][1], con eval basta una disattenzione.
>
> E' chiaro che se ad eval passi solo qualcosa di sanitizzato in varia
> maniera non corri nessun rischio particolare. Il problema e' che
> spesso, vista la potenza di eval, molti appena scopertolo ne abusano.
> Questo non vuole dire ovviamente *non usare eval*.
>
> Credo che la posizione di lisper su eval sia sintomatica: eval c'e' da
> piu' di 50 anni.
> La prima risposta qua mi sembra molto valida:
>
> http://stackoverflow.com/questions/2571401/why-exactly-is-eval-evil
>
> abstract:
> per i principianti: in generale non e' necessario, ci sono metodi piu'
> robusti di fare le stesse cose
> per gli un po' meno principianti: ci sono le macro
> A general important reason to avoid EVAL: it is often used for ugly hacks.
>
> Ora, concretizziamo su Python. Sui principianti (o su quelli che anche
> se principianti non sono), spesso e volentieri ci sono altri modi di
> fare le cose, che sono, a mio avviso, piu' strutturati e puliti.
>
> Ci sono anche casi in cui eval e' semplicemente la strada piu' comoda
> e sensata, senza passare per tre metaclassi e due class-decorator.
> Specie perche' noi non abbiamo le macro. Vedi per esempio
> l'implementazione di Raymond delle namedtuples -- almeno, credo sia di
> Raymond --, che alla fine dei conti chiama exec su uno stringone
> Python. E non mi sognerei di dire che e' insicuro: gli input sono ben
> controllati e comunque e' qualcosa che uso al posto della definizione
> di una classe... dove potrei comunque fare le peggio cose, e' input
> mio, non input utente.
>
> Pero' la regola, nel dubbio, meglio evitare features potenzialmente
> pericolose, a mio avviso sta comunque in piedi.
>
>
> ---
> [0] per esempio prendere una stringa dall'utente, salvarla in un
> modulo e importarla.
> [1] a naso, il caso in cui si usa import per un file di configurazione
> e' il cugino buono di quello la sopra: non e' insicuro nel senso che
> chi scrive la configurazione e' chi esegue il programma, su una
> macchina su cui ha i permessi, etc etc etc. E' anche vero che va
> valutato il rapporto costo/beneficio fra avere un file di
> configurazione turing-completo -- quindi flessibilita' massima -- e il
> fatto che appunto, errori di configurazione sono in generale piu'
> difficili da capire -- perche' il parsing e' fatto da Python, che di
> per se non ha idea della semantica intesa della configurazione, ma sa
> solo eseguire python --.
>
>
> --
> .
> ..: -enrico-
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>



-- 
Daniele San Giovanni
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130607/65cc5dc5/attachment.html>


Maggiori informazioni sulla lista Python