Jive Dadson wrote:

How does one execute arbitrary text as code within a module's context?

I've got some code that compiles some text and then executes it.  When
the string is "print 'Hello'", it prints "Hello".  I get no exception
when I compile and execute "foo = 555".  If I then compile and exec
"print foo", I get a name error. The variable foo is undefined. My
assumption is that the "exec" command created a new namespace, put "foo"
in that namespace, and then threw the namespace away.  Or something.

You can do

   exec codestring in globaldict, localdict

(Or something like that, this is from unused memory and is untested.) The net effect is that exec uses the subsequent dictionaries as its globals and locals, reading from and writing to them as necessary.

(Note that this doesn't get you any real security, because malicious code can still get to __builtins__ from almost any object...)

Jeff Shannon
Technician/Programmer
Credit International

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to