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?

Thanks in advance for all advice!

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

Reply via email to