Создание группы аргументов ArgParse необязательно - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть текущий код, подобный следующему:

parser = argparse.ArgumentParser()
parser.add_argument('origin_x', help='X origin', type=float)
parser.add_argument('origin_y', help='Y origin', type=float)
parser.add_argument('origin_z', help='Z origin', type=float)
parser.add_argument('file_name', help='File to use')

Я могу назвать так, конечно:

python my_prog.py 0 0 0 foo.txt

Однако я также хочу сделать это:

python my_prog.py foo.txt

Но не это:

python my_prog.py 0 foo.txt

Есть ли способ сделать это с существующим API? Этот ответ показывает, как сделать что-то подобное вручную, но есть ли автоматический способ?

1 Ответ

0 голосов
/ 14 февраля 2019

Постобработка, вероятно, лучшая ставка:

parser.add_argument('origin', nargs="*", default=[0., 0., 0.], type=float)
parser.add_argument('file_name', help='File to use')
args = parser.parse_args()
if not len(args.origin) == 3:
    parser.error("you done wrong..")
...