如何在argparse python中创建多个自定义动作?

时间:2019-02-28 04:34:02

标签: python action argparse

我已经在python中构造了argparse的一个自定义动作。但是,当我添加更多自定义操作时,它似乎不起作用。

class first_action(argparse.Action):
    def __call__(self, parser, args, values, option_string=None):
        print("the 1st")
        if ...:
            raise IndexError(...)
        elif ...:
            raise IndexError(...)
        else:
            setattr(args, self.dest, values)

这是我执行的第一个自定义操作,并且有效

如果我添加更多,

class second_action(argparse.Action):
    def __call__(self, parser, args, value, option_string=None):
        print("the 2nd")
        if ...:
            setattr(args, self.dest, fn1(value))
        else:
            setattr(args, self.dest, value)


class third_action(argparse.Action):
    def __call__(self, parser, args, value, option_string=None):
        print("the 3rd")
        if ...:
            setattr(args, self.dest, fn2(value))
        else:
            setattr(args, self.dest, value)

它起作用了,但是刚刚通过了第二个和第三个动作,并显示了消息“第一个”。在这里,只有第一个自定义动作正在起作用。

parser.add_argument('-f', action=first_action)  <-- action working
parser.add_argument('-s', action=second_action) <-- action not working
parser.add_argument('-t', action=third_action)  <-- action not working

0 个答案:

没有答案