On 12/08/2015 10:33, Peter Otten wrote:
Cecil Westerhof wrote:
I have:
========================================================================
accepted_params = {
'pcpu',
'rss',
'size',
'time',
'vsize',
}
========================================================================
Later I use:
========================================================================
if (to_check != 'all') and not(to_check in accepted_params):
raise Exception('Used illegal parameter: {0}.\n'
'Accepted ones: {1}'
.format(to_check, sorted(accepted_params)))
========================================================================
When using 'all' I want to do the work for all accepted parameters.
;-)
Doesn't that make it an "accepted parameter"? Why not add it to the set?
Is this a correct way to do this, or is there a better way?
I suppose you do this early in a function? Then at least choose a more
specific exception (e. g. ValueError).
If this is about commandline arguments -- argparse can handle such
restrictions:
$ cat demo.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--check", choices=["pcpu", "rss"], default="all")
print(parser.parse_args().check)
$ python3 demo.py
all
$ python3 demo.py --check rss
rss
$ python3 demo.py --check ssr
usage: demo.py [-h] [--check {pcpu,rss}]
demo.py: error: argument --check: invalid choice: 'ssr' (choose from 'pcpu',
'rss')
The wonderful http://docopt.org/ makes this type of thing a piece of
cake. I believe there's a newer library that's equivalent in
functionality to docopt but I can never remember the name of it, anybody?
--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.
Mark Lawrence
--
https://mail.python.org/mailman/listinfo/python-list