There must be a couple of lines that will replace the following:

>From the shell command line I wanted to send data to a specific
function inside my module and execute that function in order to test
it separately from the rest of the module. I know pdb will allow me to
insert data into a running process, but this particular function
requires several long steps beforehand.

My command line:

myprog.py --test removefromcue "myargs"         ### removefromcue is
my function inside myprog.py


main()
...
        try:
            opts, args = getopt.getopt(sys.argv[1:], "t:", ["--test="])
        except getopt.GetoptError:
            for o, a in opts:
                if o in "-t":
                    myfunc = a
                    myargs = args
                    test(myfunc, myargs)
                    sys.exit()


My problem was that I send a string into the the test function. I
needed to convert that string into the appropriate object. globals()
provides a dictionary with string:object pairs in the global
namespace.

def test(myfunc, myargs):
    """ execute a given function """
    for key,value in globals().items():
        if myfunc in key:
            func = value
            break
    args = ""
    for i in myargs:
        args += i + ","
    func(args[:-1])       ###  removefromcue("myitem")

There's something very basic that I should know.

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

Reply via email to