#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
, чтобы избежать глобальной переменной.