Получить позицию аргумента, когда несколько аргументов предоставляются последовательно с Python argparse - PullRequest
0 голосов
/ 02 марта 2019

Вот мой прототип аргумента функции: ./myfunction.py --poi_type1 loc1 --poi_type2 loc2 --poi_type1 loc3

Чтобы понять контекст, POI (poi_type1 & 2) - это точки интереса различной природы (type1 - это garden, type2 - это статуя, например).Я хотел бы сгенерировать взамен график, который связывает различные типы POI (бизнес-логика не является целью моего запроса).График должен учитывать положение аргумента POI в командной строке, и то, как я построю график, будет зависеть от типа poi_type (1 или 2).

Важно отметить, что пользователь можетукажите столько POI, сколько он хочет, и для каждого POI он должен указать, является ли он poi_type1 или poi_type2.

. Сначала я начал собирать аргумент, заданный пользователем:

import argparse
parser = argparse.ArgumentParser(description='generate graph', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--poi_type1', nargs=1, action='append', type=check_target)
parser.add_argument('--poi_type2', nargs=1, action='append', type=not_supported)
args = parser.parse_args()

Моя проблема в том, что я не знаю, в каком порядке аргумент предоставляется пользователем, если пользователь предоставляет и poi_type1, и poi_type2.

Например:

./myfunction.py --poi_type1 loc1 --poi_type2 loc2 --poi_type1 loc3

Возвращает те же результаты, что и

./myfunction.py --poi_type2 loc1 --poi_type1 loc2 --poi_type1 loc3

Я не знаю, как адаптировать мой скрипт так, чтобы он работал так, как я хочу ... Есть идеи?Спасибо!

...