On 04/01/2013 09:31 PM, Mark Lawrence wrote:
On 02/04/2013 01:31, ke...@kendy.org wrote:
Dear Tutor
I want to compare command line options, to options in a dictionary
from a YAML
file. The command line will over-ride the options in my file. (The
YAML file, and
its dictionary are not shown. That part works.)
My distilled code:
-------------------------------------------------------------------------
$ cat h.py
#!/usr/bin/python
import argparse
parser = argparse.ArgumentParser(description='Short sample app')
def GetArgs(parser):
parser.add_argument('-a', action="store_true", default=False)
parser.add_argument('-b', action="store", dest="b")
parser.add_argument('-c', action="store", dest="c", type=int)
return parser
GetArgs(parser)
print(parser.parse_args())
print("But this doesn't iter through a b and c:")
for k,v in parser.parse_args():
print('This arg is %s %s' % k, k[str(v)])
for a in vars(parser.parse_args()):
print('This arg is %s' % a)
http://docs.python.org/3/library/argparse.html#the-namespace-object
Please don't ask me for an explanation as it took me long enough to work
this out from the docs :)
http://docs.python.org/2/library/argparse.html
see section 15.4.4.6 for a very brief explanation of vars()
$
-------------------------------------------------------------------------
My error:
$ h.py -a -b hi -c 42
Namespace(a=True, b='hi', c=42)
But this doesn't iter through a b and c:
Traceback (most recent call last):
File "./h.py", line 16, in <module>
for k,v in parser.parse_args():
TypeError: 'Namespace' object is not iterable
$
How can I get parser to be iterable?
After I get it to iter, I suppose that I'll be bitten by the boolean
and integer
type conversions. I'm not sure how to handle that either. Will 'str()'
save me?
Thanks a million (again!),
Ken
--
DaveA
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor