Mercurial > hg > config
view python/example/cli.py @ 884:e5861cbbc4bb
python3
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Wed, 05 Aug 2020 09:45:27 -0700 |
parents | be9f792abaad |
children |
line wrap: on
line source
#!/usr/bin/env python """ program illustrating command line in the form of ``--option foo`` or ``--option=foo`` goes to a (key,value) paid and ``-tag`` gets appended to a list. Further options go to a further list:: >>> main(['-foo', '--bar=fleem', 'baz']) (['foo'], {'bar': 'fleem'}, ['baz']) """ import sys class ParserError(Exception): """error for exceptions while parsing the command line""" def main(_args=sys.argv[1:]): # return values _dict = {} tags = [] args = [] # parse the arguments key = None for arg in _args: if arg.startswith('---'): raise ParserError("arguments should start with '-' or '--' only") elif arg.startswith('--'): if key: raise ParserError("Key %s still open" % key) key = arg[2:] if '=' in key: key, value = key.split('=', 1) _dict[key] = value key = None continue elif arg.startswith('-'): if key: raise ParserError("Key %s still open" % key) tags.append(arg[1:]) continue else: if key: _dict[key] = arg continue args.append(arg) # return values return (_dict, tags, args) if __name__ == '__main__': try: _dict, tags, args = main() except ParserError, e: import pdb; pdb.set_trace() # for debugging print _dict print tags print args