argparse action on default values
Florian Lindner
mailinglists at xgm.de
Wed Jan 8 13:20:24 EST 2014
Hello,
I use argparse from Python 3.3.3 with a custom action that normalizes path arguments:
http://docs.python.org/3/library/argparse.html#action
def norm_path(*parts):
""" Returns the normalized, absolute, expanded and joined path, assembled of all parts. """
parts = [ str(p) for p in parts ]
return os.path.abspath(os.path.expanduser(os.path.join(*parts)))
# Taken from the docs
class NormPath(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
print('%r %r %r' % (namespace, values, option_string))
setattr(namespace, self.dest, norm_path(values))
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--config", help="Path to config file.",
default = "~/.foobar/config", action=NormPath)
return parser.parse_args()
This works fine when there is actually a --config=path supplied. But it's not being applied on default arguments. Of course, I could use "default = norm_path('~/.foobar/config')" but I expect that custom actions are applied to default values as well. The store action works alike for default and supplied values.
What do you think?
Florian
More information about the Python-list
mailing list