hi I have a program which I call findmatch that expects these arguments 1.a person name 2.a group name 3.an integer 4.a float value
I thought I would allow user to call this program either using options or using positional arguments in a predefined order ie, findmatch -f schoolmates -i jon -t 3.5 -n 115 or findmatch jon schoolmates 115 3.5 I tried to code this using optparser.. def parse_arguments(): usage = """usage: %prog [options] eg: findmatch -i jon -f schoolmates -n 115 -t 3.5 """ parser = OptionParser(usage) parser.add_option('-i','--person',dest='personname',help='person to be matched') parser.add_option('-f','-group',dest='groupname', help='group containing people to be tested against') parser.add_option('-n','-- num',dest='samplenumber',type='int',help='how many samples to be used ') parser.add_option('-t','-- cutoff',dest='cutoff',type='float',help='some upperlimit ') options,args = parser.parse_args() def check_if_person_name_valid(name): if not person_exists(name): parser.error('you must give an valid person name') def check_if_group_name_valid(name): if not group_exists(name): parser.error('you must give a valid group') if not options.personname or not options.groupname: print parser.format_help() parser.exit() check_if_person_name_valid(options.personname) check_if_group_name_valid(options.groupname) return options iif __name__=='__main__': options = parse_arguments() person_name = options.personname group = options.groupname number_of_samples_to_use = options.samplenumber cutoff = options.cutoff msg = 'You are trying to match {0} against group {1} using {2} samples \ and using {3:2.2f} as the upper limit ' print msg.format(person_name , group , number_of_samples_to_use , cutoff ) This can handle keyword arguments.But if I have to allow a user to input arguments without options ie findmatch jon schoolmates 115 3.5 can I do this in the above method? If user enters the above line ,the options instance would have { 'personname': None ,'groupname': None ...} and args will contain a list of positional arguments . I am not sure how this can be processed so that a user is given freedom to choose either. Any suggestions most welcome. regards, jim -- http://mail.python.org/mailman/listinfo/python-list