I'm currently learning on how to use the Python optparse module. I'm trying the following example script but the args variable comes out empty. I tried this using Python 2.5 and 2.6 but to no avail.
import optparse
def main():
p = optparse.OptionParser()
p.add_option('--person', '-p', action='store', dest='person', default='Me')
options, args = p.parse_args()
print '\n[Debug]: Print options:', options
print '\n[Debug]: Print args:', args
print
if len(args) != 1:
p.print_help()
else:
print 'Hello %s' % options.person
if __name__ == '__main__':
main()
Output:
>C:\Scripts\example>hello.py -p Kelvin
[Debug]: Print options: {'person': 'Kelvin'}
[Debug]: Print args: []
Usage: hello.py [options]
Options: -h, --help show this help message and exit -p PERSON, --person=PERSON
The args
variable holds any arguments that were not assigned to an option. Your code is indeed working properly by assigning Kelvin
to the person
option variable.
If you tried running hello.py -p Kelvin file1.txt
, you would find that person
still was assigned the value "Kelvin"
, and then your args
would contain "file1.txt"
.
See also the documentation on optparse
:
parse_args()
returns two values:
options
, an object containing values for all of your options—e.g. if--file
takes a single string argument, thenoptions.file
will be the filename supplied by the user, orNone
if the user did not supply that optionargs
, the list of positional arguments leftover after parsing options
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