python-3.x - 是否可以提供两个位置参数的选择,其中必须选择两个位置参数之一?
问题描述
我需要设置一个位置参数来提供两个可用选项,用户可以输入使用位置参数add
或位置参数delete
。我想知道这样的事情是如何成为一种选择的,并希望有一个代码示例来说明它的外观。
我希望 CLI 如何使用此参数的示例:
./myscript.py add --user USERNAME
、 or
./myscript.py delete --user USERNAME
、 or
./myscript.py delete --database DATABASE
等。
如果我们能以某种方式使这个位置参数不再是必需的,那么加分
PS我并不是要提出奖金问题,主要问题......它不那么重要:)
谢谢大家
解决方案
您可以使用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
推荐阅读
- arrays - 如何在多个数据集上循环执行 SQL 查询?
- python-3.x - 在 ipython 中设置别名
- laravel - 如何通过 2 表 FK 在刀片上显示数据
- delphi - 使用 Indy OpenSSL 和 MySql 时的访问冲突
- c# - 除非在 xaml.cs 中设置,否则 XAML 可见性绑定不起作用
- r - 是什么导致使用 rvest 包抓取表格网页有时会失败?
- javascript - 在运行时设置相机位置与 navmesh 冲突
- windows - iisnode msi 文件未安装在首选位置
- wpf - 当我使用 DataTrigger 设置 FocusElement 时,它不会改变焦点
- c# - Unity Container 进行依赖注入抛出异常,但 Web API 仍然有效