У нас есть куча скриптов, которые используют стандартный набор параметров. Они определены в классе, который использует все сценарии. Каждый скрипт может добавлять дополнительные параметры по мере необходимости.python argparse: как переопределить все остальные параметры - например, --help делает в большинстве программ?
Я пытаюсь добавить новый параметр, который должен действовать как -help, если он присутствует, все остальные параметры игнорируются. Когда задан новый параметр (--doc_string), я хочу, чтобы все остальные параметры игнорировались, я напечатаю определенную строку и выйду. Есть ли способ сделать это с помощью argparse
?
Я смотрел с помощью групп, как это:
parser = argparse.ArgumentParser(prog='PROG')
group1 = parser.add_argument_group('docs', 'doc printing')
group1.add_argument('--doc_string', action = 'store_true', help='print the doc string and exit')
group2 = parser.add_argument_group('group2', 'group2 description')
group2.add_argument('--bar', required=True, help='bar help')
group2.add_argument('--blah',required=True, help='url used to test.')
parser.parse_args()
Но при запуске только с --doc_string, я все еще получаю сообщение --bar is required
. Исключительные группы также не правы.
Я также рассмотрел подклассификацию argparse.RawDescriptionHelpFormatter
или argparse.RawTextHelpFormatter
или argparse.ArgumentDefaultsHelpFormatter
, но не могу понять, как использовать их для выполнения того, что я пытаюсь сделать.
Вы пробовали разбираться в args после определения своих аргументов group1? Тогда, если нет --doc-строки, добавьте другие аргументы и снова проанализируйте аргументы? –
интересный подход. Просто попробовал. Если 'argparse' знает только о' --doc_string', но видит другие параметры, такие как '--bar', он жалуется на параметры:' error: unrecognized arguments: --bar --blah'. Мне нужен способ заглянуть в список аргументов, прежде чем argparse проверит их. – SecondGear
Ты знаешь об этом: 'sys.argv'? https://docs.python.org/3.7/library/sys.html#sys.argv –