Я пытаюсь написать функцию wo, в которой вы можете анализировать переменное количество аргументов через argparse - я знаю, что могу сделать это через nargs="+"
. К сожалению, способ работы справки argparse (и то, как люди обычно пишут аргументы в CLI) ставит аргументы позиционирования последним. Это приводит к тому, что мой позиционный аргумент попадает в факультативные аргументы.
#!/usr/bin/python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("positional", help="my positional arg", type=int)
parser.add_argument("-o", "--optional", help="my optional arg", nargs='+', type=float)
args = parser.parse_args()
print args.positional, args.optional
выполняется это как ./test.py -h
показывает следующую инструкцию по использованию:
usage: test.py [-h] [-o OPTIONAL [OPTIONAL ...]] positional
но если я запустил ./test.py -o 0.21 0.11 0.33 0.13 100
, то дал мне
test.py: error: too few arguments
чтобы получить правильный анализ аргументов, мне нужно запустить ./test.py 100 -o 0.21 0.11 0.33 0.13
Итак, как я:
-
make argparse переформатировать выход использования так, что он менее вводит в заблуждение, OR, еще лучше:
-
сообщить argparse, чтобы не улавливать последний элемент для необязательного аргумента
-o
, если он является последним в списке
?