Brian Oney via Python-list wrote: > Dear all, > > I am having trouble with argparse. I am trying to translate the following > line to a sleek python script: > > lpr -o media=legal -o sides=two-sided-long-edge filename > > Now where I am. > > import argparse > parser = argparse.ArgumentParser(description='Print stuff with cups') > parser.add_argument('--printer', '-p', > help='Use this printer, try running: lpstat -a') > parser.add_argument('--options', '-o', > help='Options for this printer, try running: \ > lpoptions -p PRINTER -l') > > parser.parse_known_args(['-o', 'sides=one-sided', '-o', 'test=crap']) > Namespace(options='test=crap', printer=None)) > > How should I deal with multiple options being fed into my script? > > Thanks!
Try action="append". You may also provide a type=split_func argument to split the key=value pairs: >>> import argparse >>> parser = argparse.ArgumentParser() >>> parser.add_argument("-o", action="append", type=lambda p: p.split("=", 1)) _AppendAction(option_strings=['-o'], dest='o', nargs=None, const=None, default=None, type=<function <lambda> at 0x7feef70a8510>, choices=None, help=None, metavar=None) >>> parser.parse_args(["-o", "a=b", "-o", "c=d"]) Namespace(o=[['a', 'b'], ['c', 'd']]) -- https://mail.python.org/mailman/listinfo/python-list