是否有可能访问传递给参数的选择元组?如果是这样,我该怎么做呢
例如,如果我有
parser = argparse.ArgumentParser(description='choose location')
parser.add_argument(
"--location",
choices=('here', 'there', 'anywhere')
)
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
我可以访问元组('here', 'there', 'anywhere')吗?
事实证明,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')
Run Code Online (Sandbox Code Playgroud)
请注意,(AFAIK)此处未在任何地方记录,可能被视为"实施细节",因此如有更改,恕不另行通知等.
在添加之后,也没有任何可公开访问的方法来获取存储在a上的操作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...
Run Code Online (Sandbox Code Playgroud)