Show optparse
#!/usr/bin/env python
#
# [SNIPPET_NAME: Show optparse]
# [SNIPPET_CATEGORIES: Python Core]
# [SNIPPET_DESCRIPTION: GNU style arguments via optparse]
# [SNIPPET_AUTHOR: Jurjen Stellingwerff <[email protected]>]
# [SNIPPET_LICENSE: GPL]
# example show_optparse.py
import optparse, sys
program = "show_optparse.py"
# usefull when the program alters from the normal python file
version = """%prog 0.1
Copyright (C) 2010 Jurjen Stellingwerff
Lisense GPL: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRENTY, to the extent permittable by law.
Written by Jurjen Stellingwerff.
"""
usage = "Usage: %prog [OPTION]... [REST]"
description = "Demonstrates python code for GNU style arguments."
def do_single(option, opt, value, parser):
print value
parser = optparse.OptionParser(usage=usage, version=version, description=description, prog=program)
parser.add_option("-?", action="help", help=optparse.SUPPRESS_HELP)
parser.add_option("-f", "--file", dest="filename", action="append",
help="display this file", metavar="FILE")
parser.add_option("-q", "--quiet",
action="store_false", dest="verbose", default=True,
help="don't print status messages to stdout")
parser.add_option("--this-is-a-bit-too-long-argument", metavar="SOMETHING",
help="when arguments get too long the line splits, this also works for the longer help strings")
parser.add_option("-s", metavar="SOMETHING", action="callback", callback=do_single, type="string",
help="single token argument with a parameter")
group = optparse.OptionGroup(parser, "\nReport arguments bugs to [email protected]\nPython-snippets homepage: <https://code.launchpad.net/python-snippets>")
parser.add_option_group(group)
(options, args) = parser.parse_args()
if options.this_is_a_bit_too_long_argument:
print options.this_is_a_bit_too_long_argument
if options.filename:
for filename in options.filename:
if options.verbose:
print "Printing file",filename
try:
f = open(filename)
for line in f.readlines():
print line.rstrip()
except IOError:
print "No such file: "+options.filename
for rest in args:
print "Rest:",rest
# demonstrate the help page when there are no parameters given
# not very useful in an actual program
if len(sys.argv)==1:
parser.print_help()