On Mon, 7 Jan 2008 05:21:42 -0800 (PST), Mike <[EMAIL PROTECTED]> wrote: >I want to do something like the following (let's pretend that this is >in file 'driver.py'): > >#!/bin/env python > >import sys > >def foo(): > print 'foo' > >def bar(arg): > print 'bar with %r' % arg > >def main(): > getattr(driver, sys.argv[1])(*sys.argv[2:]) > >if __name__=='__main__': > main() > > >Essentially what I'm trying to get at here is dynamic function >redirection, like a generic dispatch script. I could call this as > >python driver.py foo > >or > >python driver.py bar 15 > >and at any time later I can add new functions to driver.py without >having to update a dispatch dict or what-have-you. > >The problem is, 'driver' doesn't exist in main() line 1. If I 'import >driver' from the command line, then getattr(driver, ...) works, but >it's not bound here. > >Is there any way around this? Can I somehow scope the 'current >module' and give getattr(...) an object that will (at run time) have >the appropriate bindings?
How about doing "import driver" and then using "getattr(driver, ...)"? Jean-Paul -- http://mail.python.org/mailman/listinfo/python-list