Matthew Lear wrote: > Hello, > > I'm having problems getting getopt to function correctly. Basically, no > exception is being raised if no argument is passed to the code snippet > below. I've read the Python documentation and tried example code from > various sources which should cause an exception, only they don't. I've > also tried executing the code on different machines too but to no avail. > I'm sure I'm obviously doing something wrong but can't determine what. > Any help would be much appreciated indeed. > > import sys, getopt > > try: > opts, args = getopt.getopt(sys.argv, "h:", ["help"]) > except getopt.GetoptError: > print "error" > sys.exit(2) > > If no args are passed when the script is run there is no exception > raised. Why? Surely the "h:" means that this option must be passed? > > Thanks, > -- Matt
That's not what ":" means. It means that, *if* the option is passed, it must be followed by an additional argument, e.g.: foo.py -h something If you require that -h be passed, it's not much of an option! You should use a regular argument and check len(args) or somesuch. Or, if you must keep it an "option", do something equivalent for that. BTW: Checked out optparse? It's bigger and sexier! -- Matt Nordhoff -- http://mail.python.org/mailman/listinfo/python-list