[Python] Problemi con l'interpretazione di codice da stringa
michele a nectarine.it
michele a nectarine.it
Mar 23 Feb 2010 12:24:25 CET
Ciao,
sto cercando di realizzare un applicativo che legga delle stringhe di
testo e le interpreti come codice Python. Trascurando [per il momento]
le eventuali implicazioni di security, il codice che ho scritto e` il
seguente:
import new
import sys
###
main = """
import math
for x in xrange(5):
print x
print 'main done'
"""
helper = """
import main
for i in xrange(5): print math.sin(i)
print 'helper done'
"""
###
filesparsedNames = ['main', 'helper']
def moduleimporter(name):
mod = new.module(name)
try:
exec eval(name) in mod.__dict__
except Exception, e:
print("Exception %s while trying to evaluate module
%s" % (e, eval(name)))
moduleimporter(filesparsedNames[0])
moduleimporter(filesparsedNames[1])
Il codice funziona perfettamente nell'interpretare la prima stringa,
ovvero il main, mentre nel secondo caso non funziona riportando
quest'errore:
{'e': NameError("name 'math' is not defined",), 'name': 'helper',
'mod': <module 'helper' (built-in)>}
A cosa puo` essere dovuto?
Penso che sia un problema di locals() e globals(), ma prima vorrei
sentire anche un vostro parere.
Grazie!
Michele
Maggiori informazioni sulla lista
Python