Robert Kern wrote: > On 3/15/11 9:54 AM, Neal Becker wrote: >> Is there any way to tell if an arg value was defaulted vs. set on command >> line? > > No. If you need to determine that, don't set a default value in the > add_argument() method. Then just check for None and replace it with the > default value and do whatever other processing for the case where the user > does not specify that argument. > > parser.add_argument('-f', '--foo', help="the foo argument [default: bar]") > > args = parser.parse_args() > if args.foo is None: > args.foo = 'bar' > print 'I'm warning you that you did not specify a --foo argument.' > print 'Using default=bar.' >
Not a completely silly use case, actually. What I need here is a combined command line / config file parser. Here is my current idea: ----------------------------- parser = OptionParser() parser.add_option ('--opt1', default=default1) (opt,args) = parser.parse_args() import json, sys for arg in args: print 'arg:', arg d = json.load(open (arg, 'r')) parser.set_defaults (**d) (opt,args) = parser.parse_args() ----------------------- parse_args() is called 2 times. First time is just to find the non-option args, which are assumed to be the name(s) of config file(s) to read. This is used to set_defaults. Then run parse_args() again. -- http://mail.python.org/mailman/listinfo/python-list