Argparse "обязательные" необязательные аргументы
Модуль Python argparse
имеет так называемые необязательные аргументы. Все аргументы, имя которых начинается с -
или --
, по умолчанию являются необязательными. Как правило, обязательные аргументы являются позиционными, и, следовательно, при запуске программы они явно не указаны.
Например, в script, который имел:
parser.add_argument('language', help="Output language")
Вызовы будут выглядеть так:
$ hello-world czech
Иногда может быть приятнее иметь обязательный аргумент, передаваемый по имени (например, скриптовые вызовы легче читать таким образом), но все равно являются обязательными. то есть.
$ hello-world --use-lang czech
Как достичь этого? Именованные аргументы называются "необязательными" в документации argparse
, что заставляет его звучать так, как будто они не могут быть обязательными. Есть ли способ сделать их обязательными?
Ответы
Ответ 1
Согласно канонической документации, можно объявить необязательные аргументы, которые являются обязательными. Вы используете аргумент required
с именем add_argument
:
parser.add_argument('--use-lang', required=True, help="Output language")
Ответ 2
Использование флага required=True
прежнему показывает аргумент как необязательный при запуске сценария с --help
. Нет ли способа, которым это можно изменить?