execv(). In Python, arguments are elements of
sys.argvis the name of the program being executed). Unix shells also use the term ``word''.
It is occasionally desirable to substitute an argument list other
sys.argv[1:], so you should read ``argument'' as ``an element of
sys.argv[1:], or of some other list provided as a substitute for
"-F". Also, traditional Unix syntax allows multiple options to be merged into a single argument, e.g.
"-x -F"is equivalent to
"-xF". The GNU project introduced a double hyphen followed by a series of hyphen-separated words, e.g. --file or --dry-run. These are the only two option syntaxes provided by optparse.
Some other option syntaxes that the world has seen include:
"-pf"(this is not the same as multiple options merged into a single argument)
"-file"(this is technically equivalent to the previous syntax, but they aren't usually seen in the same program)
These option syntaxes are not supported by optparse, and they never will be. This is deliberate: the first three are non-standard on any environment, and the last only makes sense if you're exclusively targeting VMS, MS-DOS, and/or Windows.
-f foo --file foo
or included in the same argument:
Typically, a given option either takes an argument or it doesn't.
Lots of people want an ``optional option arguments'' feature, meaning
that some options will take an argument if they see it, and won't if
they don't. This is somewhat controversial, because it makes parsing
"-a" takes an optional argument and
another option entirely, how do we interpret
"-ab"? Because of
this ambiguity, optparse does not support this feature.
examples/required_2.pyin the optparse source distribution for two ways to implement required options with optparse.
For example, consider this hypothetical command-line:
prog -v --report /tmp/report.txt foo bar
-v and --report are both options. Assuming that
--report takes one argument,
"/tmp/report.txt" is an option
"bar" are positional arguments.
See About this document... for information on suggesting changes.