Как создать несколько пользовательских действий в argparse python? - PullRequest
0 голосов
/ 28 февраля 2019

Я уже создал одно пользовательское действие argparse в python.Однако, когда я добавляю больше настраиваемых действий, они, кажется, не работают.

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)

Он работал, но только что прошел 2-е и 3-е действия и показал сообщение «1-е». Здесь работает только 1-е настраиваемое действие.

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
...