Robert, Andrew wrote:
Hi Everyone,

I am trying to do an MQ inquiry but I am having mixed results.

If I do the command direct via a print statement like the one below, it
works,


print 'Queue Description:\t' , q.inquire(CMQC.MQCA_Q_DESC)


When I try to cycle through an array of command line supplied keys, it fails.


while counter < arg_array_size: arg1=valid_keys[sys.argv[counter]] arg2 = 'q.inquire(CMQC.'+valid_keys[sys.argv[counter]]+')' print arg1," ",arg2 counter = counter +1

You are confusing strings with executable code. What you are doing here is essentially print 'MQCA_Q_DESC' , 'q.inquire(CMQC.MQCA_Q_DESC)'

Note the quotes around the second string - not very exciting.

You could use eval() to get around this but there are better ways. You just need to get an attribute of CMQC by name, then call q.inquire() with that attribute. Something like this should work:

while counter < arg_array_size:
    arg1=valid_keys[sys.argv[counter]]

    # if arg1 is the string "MQCA_Q_DESC" then the next line is the same
    # as saying queryParam = CMQC.MQCA_Q_DESC
    queryParam = getattr(CMQC, arg1)

    # Now we can use queryParam directly
    arg2 = q.inquire(queryParam)
    print arg1,"     ",arg2
    counter = counter +1

I have no way to test this so write back if you have trouble with it.

Kent

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to