How to handle calling functions from cli

Chris Rebert clp2 at rebertia.com
Fri Feb 24 17:41:28 EST 2012


On Fri, Feb 24, 2012 at 2:16 PM, Rodrick Brown <rodrick.brown at gmail.com> wrote:
> I have a bunch of sub routines that run independently to perform various system checks on my servers. I wanted to get an opinion on the following code I have about 25 independent checks and I'm adding the ability to disable certain checks that don't apply to certain hosts.
>
>
> m = { 'a': 'checkDisks()',
>          'b': 'checkMemSize()',
>          'c': 'checkBondInterfaces()'
>    }
>
>    parser = argparse.ArgumentParser(description='Parse command line args.')
>    parser.add_argument('-x', action="store", dest="d")
>    r = parser.parse_args(sys.argv[1:])
>
>    runlist = [ c for c in m.keys() if c not in r.d ]
>    for runable in runlist:
>        eval(m[runable])
>
> I'm using temp variable names for now until I find an approach I like.
>
> Is this a good approach ? It doesn't look too pretty and to be honest feels awkward?

You should make use of the fact that functions are first-class objects
in Python:

m = { 'a': checkDisks,
    'b': checkMemSize,
    'c': checkBondInterfaces }
# …
for runable in runlist:
    m[runable]()


Cheers,
Chris



More information about the Python-list mailing list