Я анализирую аргументы CLI в моей программе с библиотекой argparse
. Я хотел бы проанализировать аргумент, который может повторяться, со следующим поведением:
- , если аргумент появляется хотя бы один раз, его значения сохраняются в списке,
- , если аргумент не отображается, значение представляет собой некоторый список по умолчанию.
Пока у меня есть следующий код:
import argparse
ap = argparse.ArgumentParser(description="Change channel colours.")
ap.add_argument('-c', '--channel', action='append', default=['avx', 'fbx'])
print(ap.parse_known_args(['-c', 'iasdf', '-c', 'fdas']))
print(ap.parse_known_args())
Это соответственно устанавливает список по умолчанию, однако это не так начните с пустого списка, когда появится аргумент. Другими словами, второй оператор print
выводит правильное значение (список по умолчанию), но первый выводит
['avx', 'fbx', 'iasdf', 'fdas']
вместо
['iasdf', 'fdas']
Есть ли способ в argparse
делать то, что я хочу, не делая что-то вроде
if len(args.channel) > 2:
args.channel = args.channel[2:]
по факту?