python - 检查 python argparse 中使用了哪个组
问题描述
我需要使用 ArgumentParser 在 python 中有两组互斥的参数。我在这里使用Jonathan 建议的方法:
subparsers = parser.add_subparsers(help = "You should explicitly specify either group_1 or gropup_2")
parser_g1 = subparsers.add_parser("group_1")
parser_g1.add_argument("group_1_arg1")
parser_g2 = subparsers.add_parser("group_2")
parser_g2.add_argument("group_2_arg1")
parser_g2.add_argument("group_2_arg2")
它看起来是正确的方法,但问题是确定在运行时选择了哪个组。如果第一个参数是group_1
我得到异常分配args.group_2_arg1
和args.group_2_arg2
. 如果第一个参数是group_2
我得到异常分配args.group_1_arg1
例外'Namespace' object has no attribute 'group_1_arg1'
是有没有办法检查使用了哪个paser组,其他,然后检查命名空间?s
解决方案
好吧,简单的答案是使用
if hasattr(args, 'group_1_arg1'):
其他论点也是如此。
推荐阅读
- python - 如果我不发送两个参数,捕获异常“缺少 1 个必需的位置参数”?
- ios - 如何让`react-native link`通过Cocoapods链接我的图书馆?
- mongodb - 使用带有凭据的 URI 时无法连接到 MongoDB
- python - 将数据框列与条件进行比较
- terminal - Ubuntu登录循环并且永远不会工作
- r - R - ROC 曲线/AUC 特异性与 1-特异性
- assembly - 在 MIPS 中处理多个条件
- python - Python:如何运行一个简单的 P2P 网络框架
- python - 将 Python Systemd 输出记录到日志文件
- terminal - 如何将终端 env COLUMNS 和 LINES 传递给 docker-compose.yml?