[Python] alternative ad eval
Balan Victor
balan.victor0 a gmail.com
Lun 17 Mar 2014 22:57:47 CET
Ho un array di tuple cosi formate da 3 elementi:
(int|float|boolean|string|datetime|..., string, boolean). Es:
[
(10, "value >= 1", True),
("Ciao", "o in value", True),
(True, "value == False", False),
(92.5f, "value >= 92.0f", True),
]
Il primo elemento della tupla può essere qualunque tipo o classe di python.
Il secondo elemento è una espressione da applicare sulla tupla e che deve
restituire True or False(value si riferisce al primo elemento della tupa)
Il terzo elemento è il risultato dell'operazione appena sopra.
A intervalli regolari ho bisogno di scorrere l'array sopra e aggiornare il
valore del terzo elemento.
Ho pensato di usare eval in questo modo:
def check_status(value, eval_string):
rc = eval(eval_string)
if rc is not bool: raise WrongEvalString()
return rc
Conosco i rischi di eval e vorrei evitare di usarlo però non riesco a
trovare nulla di altrettanto semplice e con le stesse potenzialità.
NB: In realtà la stringa che fa la validazione può essere impostata solo da
qualcuno di autorizzato quindi il rischio che mi cancelli tutto il fs non
ci dovrebbe essere, e non dovrebbero nemmeno fare operazioni del tipo
"value ** value" però in ogni caso vorrei trovare qualcosa che mi metta al
sicuro da questo tipo di operazioni.
grazie
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140317/414be6fd/attachment.html>
Maggiori informazioni sulla lista
Python