python - argparse一个参数而不是其他几个参数

时间:2012-10-30 22:09:43

标签: python argparse

例如我有选项:

parser.add_argument('-b', action="store_true")
parser.add_argument('-c', action="store_true")
parser.add_argument('-d', action="store_true")

我想使用同义词选项“-a”启用所有这些选项。有可能吗?

1 个答案:

答案 0 :(得分:4)

我认为在parse_args()之后执行此操作最简单:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-b', action="store_true")
parser.add_argument('-c', action="store_true")
parser.add_argument('-d', action="store_true")
parser.add_argument('-a', action="store_true")
args = parser.parse_args()
if args.a: args.b = args.c = args.d = True

或者,您可以使用自定义操作执行此操作,但我认为这样做太过分了:

import argparse
class AllAction(argparse.Action):
    def __call__(self, parser, args, values, option_string = None):
        # print '{n} {v} {o}'.format(n = args, v = values, o = option_string)
        for param in ['a', 'b', 'c', 'd']:
            setattr(args, param, True)

parser = argparse.ArgumentParser()
parser.add_argument('-b', action="store_true")
parser.add_argument('-c', action="store_true")
parser.add_argument('-d', action="store_true")
parser.add_argument('-a', action = AllAction, nargs = '?')
args = parser.parse_args()
print(args)
相关问题