[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