首页 > 解决方案 > 是否可以提供两个位置参数的选择,其中必须选择两个位置参数之一?

问题描述

我需要设置一个位置参数来提供两个可用选项,用户可以输入使用位置参数add或位置参数delete。我想知道这样的事情是如何成为一种选择的,并希望有一个代码示例来说明它的外观。

我希望 CLI 如何使用此参数的示例: ./myscript.py add --user USERNAME、 or ./myscript.py delete --user USERNAME、 or ./myscript.py delete --database DATABASE等​​。

如果我们能以某种方式使这个位置参数不再是必需的,那么加分

PS我并不是要提出奖金问题,主要问题......它不那么重要:)

谢谢大家

标签: python-3.xargparse

解决方案


您可以使用choices参数限制可能的值。并使用“?”使其成为可选的 nargs

parser=argparse.ArgumentParser()
parser.add_argument('foo',choices=['abc','def'],nargs='?')
parser.add_argument('-d')     # flagged options 
args = parser.parse_args()
print(args)

位置可以相对于选项以任何顺序出现。

使用多个位置,其中一个是“?”,有点棘手,请参阅:Python argparse,位置参数后的值

要更多地控制这些位置值允许哪些可选,请查看子解析器机制。但首先尝试这个简单的版本。

测试:

print(parser.parse_args([]))   # no input, ok
print(parser.parse_args(['-d', '1', 'abc']  # ok
parser_parse_args(['adf'])  # error

推荐阅读