This is more like a code design question. what are good default values for optional options that are of type string/directory/fullname of files?
Let us say I have code like this:
import optparse
parser = optparse.OptionParser()
parser.add_option('-i', '--in_dir', action = "store", default = 'n', help = 'this is an optional arg')
(options, args) = parser.parse_args()
Then I do:
if options.in_dir == 'n':
print 'the user did not pass any value for the in_dir option'
else:
print 'the user in_dir=%s' %(options.in_dir)
Basically I want to have default values that mean the user did not input such option versus the actual value. Using 'n' was arbitrary, is there a better recommendation?
Deprecated since version 3.2: The optparse module is deprecated and will not be developed further; development will continue with the argparse module. optparse is a more convenient, flexible, and powerful library for parsing command-line options than the old getopt module.
parse_args() returns two values: options, an object containing values for all of your options— e.g. if "--file" takes a single string argument, then options. file will be the filename supplied by the user, or None if the user did not supply that option.
Defining options: It should be added one at a time using the add_option(). Each Option instance represents a set of synonymous command-line option string. To define an option with only a short option string: parser.
options inquires as to how many parameters the callable accepts. If it accepts only 1, it will be the value passed in.
You could use an empty string, "", which Python interprets as being False; you can simply test:
if options.in_dir:
# argument supplied
else:
# still empty, no arg
Alternatively, use None:
if options.in_dir is None:
# no arg
else:
# arg supplied
Note that the latter is, per the documentation the default for un-supplied arguments.
How about just None?
Nothing mandates that the default values must be of the same type as the option itself.
import optparse
parser = optparse.OptionParser()
parser.add_option('-i', '--in_dir', default=None, help='this is an optional arg')
(options, args) = parser.parse_args()
print vars(options)
(ps. action="store" isn't required; store is the default action.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With