Я пытаюсь назначить несколько атрибутов аргументов на основе их местоположения в списке атрибутов. Привести пример;присваивать переменную нескольким атрибутам argparse
import argparse
import sys
def args_options:
parser = argparse.ArgumentParser()
parser.add_argument('-s', help='-s argument help', nargs=3)
parser.add_argument('-k', help='-k argument help', nargs=3)
arguments = parser.parse_args()
return arguments
def assign_arg():
args = args_options()
if args.s or args.k:
variable1 = args[1] # this is where I'm stuck as I know this won't work
variable2 = args[2] #^
Исходя из вышеизложенного, я пытаюсь проверить, либо arg.s или arg.k верно, и если да, то второй и третий атрибут в списке либо аргумента присваиваются переменным.
Можно ли это сделать с помощью python? Или мне нужно будет это сделать;
if arg.s:
variable1 = arg.s[1]
variable2 = arg.s[2]
elif arg.k:
variable1 = arg.k[1]
variable2 = arg.k[2]
Вышеуказанное будет работать, но у меня есть много вариантов/атрибутов, поэтому код может затянуться. Хотел спросить, есть ли способ сделать это более эффективно, найдя атрибут в списке нескольких параметров аргументов и назначив это переменной.
Ваши варианты не являются взаимоисключающей группой, что, если были указаны как '-s', так и' -k'? –
Кажется, что аргументы для '-s' или' -k' обрабатываются одинаково, не имеет смысла просто превращать s/k в флаг и аргументы, обрабатываемые отдельно? –