IdentifiantMot de passe
Mot de passe oublié ?Je m'inscris ! (gratuit) The store action The store action

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 14.3.5, Extending optparse.

See About this document... for information on suggesting changes.