command line utility for cups

Peter Otten __peter__ at web.de
Wed Jun 20 06:21:02 EDT 2018


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']])





More information about the Python-list mailing list