What is the best option to parse "mount style" options in python?
I need to parse argument=value
lists associated with a specific argument, as in the following example:
myprogram --database type=mysql,user=root,passwd=secret,database=mydb --mail type=imap,server=imap.my.domain,user=myself,passwd=othersecret,port=999 --whatever key=val,key=val2,etcetera
My first guess would be to specify a single argument and then hand-parse it (example-only code):
from argparse import ArgumentParser
parser = ArgumentParser(description='Example only')
parser.add_argument('-D', '--database', nargs=1)
parser.add_argument('-M', '--mail', nargs=1)
parser.add_argument('-W', '--whatever', nargs=1)
args = parser.parse_args('--database type=mysql,user=root,passwd=secret,database=mydb --mail type=imap,server=imap.my.domain,user=myself,passwd=othersecret,port=999 --whatever key=val,key=val2,etcetera'.split())
def parse(a):
d = {}
for x in a.split(','):
try:
k, v = x.split('=')
except ValueError:
k = x
v = None
d[k] = v
args.database = parse(args.database)
args.mail = parse(args.mail)
args.whatever = parse(args.whatever)
... but I'm wondering if there's a better way.