Peter Otten wrote:
> To feed an arbitrary mapping object to execfile() you need to upgrade to
> Python 2.4.

Thanks! As clear as possible. I will do that.

FYI: I think I managed to achieve what I want in Py2.3 using the 
compiler module:

    def getNamesFromAstNode(node,varSet):
        if node.__class__ in (compiler.ast.Global,compiler.ast.Import):
            varSet.union_update(node.names)
        if node.__class__ in (compiler.ast.Name,):
            varSet.add(node.name)
        for subNode in node.getChildNodes():
            getNamesFromAstNode(subNode,varSet)

    # Get all variable names that are referenced in the file:
    varSet = sets.Set()
    mainNode = compiler.parseFile(filePath)
    getNamesFromAstNode(mainNode,varSet)

    # Define a namespace and update it:
    ns = {}
    for varName in varSet:
        ns[varName] = dummyObject

    # Execute the file without NameErrors:
    execfile(filePath,ns)

Batteries included!

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

Reply via email to