事实证明,parser.add_argument实际上返回了相关的Action.您可以选择以下选项:
>>> import argparse
>>> parser = argparse.ArgumentParser(description='choose location')
>>> action = parser.add_argument(
... "--location",
... choices=('here', 'there', 'anywhere')
... )
>>> action.choices
('here', 'there', 'anywhere')
请注意,(AFAIK)此处未在任何地方记录,可能被视为“实施细节”,因此如有更改,恕不另行通知等.
在添加ArgumentParser之后,也没有任何可公开访问的方法来获取存储在ArgumentParser上的操作.我相信它们可以作为parser._actions使用,如果你愿意讨论实现细节(并假设涉及任何风险)……
你最好的选择是为位置选择创建一个常量,然后在你的代码中使用它:
LOCATION_CHOICES = ('here', 'there', 'anywhere')
parser = argparse.ArgumentParser(description='choose location')
parser.add_argument(
"--location",
choices=LOCATION_CHOICES
)
args = parser.parse_args()
# Use LOCATION_CHOICES down here...