En Tue, 12 Feb 2008 18:53:36 -0200, Santiago Romero <[EMAIL PROTECTED]> escribió: >> Dennis Kempin wrote: >> You are using a scripting language.. why not use python directly? > > I just want to execute an small set of commands (PLAYSOUND, PLAYMUSIC, > WALKTO, PLAYERSAY, SLEEP and a couple more) ... do you think I can > write python code inside my object.exec (list attribute) loaded from a > file? > Do you mean that I can replace my "language" by just python (defining > SETMAP, SLEEP and all those functions somewhere in my main source > code).
Something like that. Build a dictionary -that will be used as the script global namespace- containing all the required functions, plus a '__builtins__' entry (another dict) containing the builtins that you want to provide. For example, if you don't want to enable "import", don't include __import__. import __builtin__ builtins = dict(__builtin__.__dict__) # a copy of the standard __builtin__ module namespace del builtins['__import__'] ns = { 'SETMAP': SETMAP, 'SHOWTEXT': SHOWTEXT, ... '__builtins__': builtins } exec text_of_the_user_script in ns Warning: this is unsafe!!!. Malicious users could execute arbitrary code; although this may not be an issue if the game runs on the user's own system. The advantage is that you let them use all the power of Python as a scripting language. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list