The most common option action is store
, which tells optparse to take
the next argument (or the remainder of the current argument), ensure
that it is of the correct type, and store it to your chosen destination.
For example:
parser.add_option("-f", "--file", action="store", type="string", dest="filename")
Now let's make up a fake command line and ask optparse to parse it:
args = ["-f", "foo.txt"] (options, args) = parser.parse_args(args)
When optparse sees the option string "-f"
, it consumes the next
argument, "foo.txt"
, and stores it in options.filename. So,
after this call to parse_args(), options.filename is
"foo.txt"
.
Some other option types supported by optparse are int
and float
.
Here's an option that expects an integer argument:
parser.add_option("-n", type="int", dest="num")
Note that this option has no long option string, which is perfectly
acceptable. Also, there's no explicit action, since the default is
store
.
Let's parse another fake command-line. This time, we'll jam the option
argument right up against the option: since "-n42"
(one argument) is
equivalent to "-n 42"
(two arguments), the code
(options, args) = parser.parse_args(["-n42"]) print options.num
will print "42"
.
If you don't specify a type, optparse assumes string
. Combined with the
fact that the default action is store
, that means our first example
can be a lot shorter:
parser.add_option("-f", "--file", dest="filename")
If you don't supply a destination, optparse figures out a sensible default
from the option strings: if the first long option string is
"-foo-bar"
, then the default destination is foo_bar
. If there
are no long option strings, optparse looks at the first short option
string: the default destination for "-f"
is f
.
optparse also includes built-in long
and complex
types. Adding
types is covered in section
See About this document... for information on suggesting changes.