#!/usr/bin/env python # "Pass-through" option parsing -- an OptionParser that ignores # unknown options and lets them pile up in the leftover argument # list. Useful for programs that pass unknown options through # to a sub-program. from optik import OptionParser, BadOptionError class PassThroughOptionParser(OptionParser): def _process_long_opt(self, rargs, values): try: OptionParser._process_long_opt(self, rargs, values) except BadOptionError, err: self.largs.append(err.opt_str) def _process_short_opts(self, rargs, values): try: OptionParser._process_short_opts(self, rargs, values) except BadOptionError, err: self.largs.append(err.opt_str) def main(): parser = PassThroughOptionParser() parser.add_option("-a", help="some option") parser.add_option("-b", help="some other option") parser.add_option("--other", action='store_true', help="long option that takes no arg") parser.add_option("--value", help="long option that takes an arg") (options, args) = parser.parse_args() print "options:", options print "args:", args main()