让 python arg 将另一个标志设置为 true 除了自身
Having a python arg set another flag as true in addition to itself
使用 arg 解析,我有两个参数。我希望第二个自动使第一个为真,即使第一个没有被调用。有什么办法吗?
我想要的基本要点:
parser.add_argument('--verbose', action='store_true')
parser.add_argument('--verbose-with-bonus', action='store_true')
parser.parse_args('--verbose-with-bonus'.split())
Namespace(verbose=True, verbose_with_bonus=True)
args = parse_args()
args.verbose = args.verbose or args.verbose_with_bonus
可能还不错
尤其是 store_true
参数,解析后很容易实现自己的检查,例如
if args.verbose_with_bonus:
args.verbose = True
或
if args.verbose_with_bonus and not args.verbose:
parser.error('naughty user')
文档讨论了 'count' 参数类型:
'count' - This counts the number of times a keyword argument occurs. For example, this is useful for increasing verbosity levels:
>>>
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--verbose', '-v', action='count')
>>> parser.parse_args('-vvv'.split())
Namespace(verbose=3)
因此您可以将 verbose=1
视为您的普通冗长,将 verbose=2
视为 verbose_with_bonus。
也可以创建自定义操作 classes,例如,可以同时设置 verbose_with_bonus
和 verbose
的操作。但我怀疑你的情况太过分了。 (ps。有很多关于编写自定义操作的 SO 答案 class)。
使用 arg 解析,我有两个参数。我希望第二个自动使第一个为真,即使第一个没有被调用。有什么办法吗?
我想要的基本要点:
parser.add_argument('--verbose', action='store_true')
parser.add_argument('--verbose-with-bonus', action='store_true')
parser.parse_args('--verbose-with-bonus'.split())
Namespace(verbose=True, verbose_with_bonus=True)
args = parse_args()
args.verbose = args.verbose or args.verbose_with_bonus
可能还不错
尤其是 store_true
参数,解析后很容易实现自己的检查,例如
if args.verbose_with_bonus:
args.verbose = True
或
if args.verbose_with_bonus and not args.verbose:
parser.error('naughty user')
文档讨论了 'count' 参数类型:
'count' - This counts the number of times a keyword argument occurs. For example, this is useful for increasing verbosity levels:
>>>
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--verbose', '-v', action='count')
>>> parser.parse_args('-vvv'.split())
Namespace(verbose=3)
因此您可以将 verbose=1
视为您的普通冗长,将 verbose=2
视为 verbose_with_bonus。
也可以创建自定义操作 classes,例如,可以同时设置 verbose_with_bonus
和 verbose
的操作。但我怀疑你的情况太过分了。 (ps。有很多关于编写自定义操作的 SO 答案 class)。