Есть ли способ получить argparse.ArgumentParser.parse_args(), чтобы не выходить при ошибках аргумента?

Например:

import argparse

parser = arparse.ArgumentParser()
# parser.add_argument(...) ...
args = parser.parse_args(args_list)

Проблема в, parser.parse_args автоматически завершается при возникновении ошибки в args_list, Есть ли настройка, которая вместо этого вызывает более дружественное исключение? Я не хочу ловить SystemExit и извлеките из него нужное сообщение об ошибке, если есть способ обойти это.

1 ответ

Вы могли бы использовать

args, unknown = parser.parse_known_args(args_list)

Тогда любые неизвестные аргументы будут просто возвращены в unknown,

Например,

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--bar', action='store_true')
parser.add_argument('cheese')
args, unknown = parser.parse_known_args(['--swallow', 'gouda', 'african'])
print(args)
# Namespace(bar=False, cheese='gouda')

print(unknown)
# ['--swallow', 'african']
Другие вопросы по тегам