Така че се опитвам да измисля стратегия, използвайки библиотеката argparse.
Ето как искам да взаимодействам с моята програма:
$ program list [<number>]
$ program check <name>
$ program watch <name> [<quality>]
В момента имам анализатор на аргументи като следния:
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument('list')
group.add_argument('check')
group.add_argument('watch')
Но как мога да добавя незадължителен аргумент, да речем цяло число, към съществуващ аргумент?
Това означава, че потребителят може да извика командата list по следните начини:
program list
Където действието със списък ще бъде извикано със стойност по подразбиране или:
program list 10
Където действието със списък ще бъде извикано с аргумент 10.
Видях опцията за подкоманди в документацията, но се натъкнах на проблема, при който ще имам поданализатор за аргументи на списъка, но след това ще трябва да добавя флаг, като например -n и след това да предоставя номера. Може би това е по-добрият начин да го направите? Но ми харесва идеята просто да предоставите номера, ако искате, или да го пропуснете, ако не искате.
Добра практика ли е това, което се опитвам да постигна? Възможно ли е с argparse?