Дополнительно
Использование 'argparse.ArgumentError' в Python
Я'd, как использовать исключение ArgumentError
в argparse
модуль в Python, но я могу'т выяснить, как использовать его. Подпись говорит, что это должно называться `ArgumentError(рассуждение, сообщение), но я могу'т выяснить, что "аргумент" должен быть. Я думаю, что это должна быть какая-то часть объекта парсера, но я не мог'т найти любую документацию на это.
42
2
Из исходной документации](https://hg.python.org/cpython/file/v3.5.2/Lib/argparse.py#l34):
Этот "аргумент" параметр конструктора является объект "действие", из которой вызывается исключение. Как правило, нет необходимости поднимать его за "действием" подкласс, и при наследовании он, нет никакой необходимости явно поднять его; обычно поднимают
ValueError
(или как там это уместно), а не.Значений с плавающей точкой между 0 и 1
Что касается вашего комментария, что вы только хотите принять плавающей запятой между 0 и 1. Для этого вы должны использовать возможность определять пользовательские типы. Вы можете сделать это например так:
Обратите внимание, что это также безопасно в отношении не плавает как поплавок(строка)
поднимет
ValueErrorдля некурящих, поплавки которой также вызывает недопустимую ошибку типа
argparseмодуль. [
ArgumentTypeError`](https://hg.python.org/cpython/file/v3.5.2/Lib/argparse.py#l725) это просто способ, чтобы указать пользовательское сообщение об ошибке.Взаимоисключающие параметры
Для взаимоисключающих параметров, вы должны использовать
argparse.add_mutually_exclusive_group
.# Зависимость параметра#
Зависимость параметра не совсем то, что должно быть сделано аргумент парсер. Для семантического детали, вы должны просто сделать это самостоятельно:
Вы можете использовать
ArgumentParser.error
для повышения пользовательского сообщения об ошибке, который будет прерывать программу и распечатать на консоль.Но, конечно, в такой ситуации это было бы сделать намного больше смысла, чтобы просто неявно предполагаю
-П
, если это возможно.В то время как парсер.ошибка () является то, что большинство людей, вероятно, хотите, также можно использовать argparse.ArgumentError() (как вопрос задает.) Вам нужна ссылка на аргумент, как
bar_arg
в примере ниже:Этот результат, как показано ниже:
в