Преобразование сообщения argparse в переменную

#python #argparse

#python #argparse

Вопрос:

Есть ли способ захватить выходные данные вызова parser.parse_args(...) переменной?

Я пытаюсь использовать это, чтобы получить сообщение, которое выводится на экран, например, в случае отсутствия требуемых аргументов.

__repr__ для исключения SystemExit не содержит строку справки.

Я заинтересован в получении чего-либо типа «ошибка, требуются следующие аргументы: argument_x» и получить это в виде строки.

Комментарии:

1. Вы можете создать подкласс ArgumentParser и реализовать свой собственный def error(self, string): .

2. Подкрепляя приведенный выше комментарий ссылкой: docs.python.org/3/library /…

Ответ №1:

 from argparse import ArgumentParser


class MyArgParser(ArgumentParser):

    def __init__(self, *args, **kwargs):
        ArgumentParser.__init__(self, *args, **kwargs)
        self.error_message = ''

    def error(self, message):
        self.error_message = message



parser = MyArgParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs=' ',
                    help='an integer for the accumulator')
args = parser.parse_args()
if parser.error_message != '':
    print('error_message = ', parser.error_message)
else:
    print(args.integers)
  

Комментарии:

1. возможно, имеет смысл сохранить error_message в переменной-члене MyArgParser , чтобы избежать глобальной переменной.