from optparse import Option class DictOption(Option): """ A parseopt option that let's me define a dictionary through the commandline. optparse example: parser.add_option(DictOption("-p","--passwords",dest="passwords",type="string",action="dic")) Commandline usage: --passwords=[localhost]value,[slicehost]whatever Commandline, if spaces are needed: --passwords="[localhost]my Password,[slicehost]Anot erPassword" This would be defined in the final options dictionary as another dictionary: example 1: { 'passwords':{'localhost':'value' } } example 2: { 'passwords':{'localhost':'my Password', 'slicehost':'Anot erPassword' } } """ ACTIONS = Option.ACTIONS + ("dic",) STORE_ACTIONS = Option.STORE_ACTIONS + ("dic",) TYPED_ACTIONS = Option.TYPED_ACTIONS + ("dic",) ALWAYS_TYPED_ACTIONS = Option.ALWAYS_TYPED_ACTIONS + ("dic",) def take_action(self,action,dest,opt,value,values,parser): if action=="dic": vals=value.split(",") d={} for val in vals: p=val.split("]") k=p[0][1:] v=p[1] d[k]=v setattr(values,dest,d) else: Option.take_action(self, action, dest, opt, value, values, parser)