Я хочу запустить cli как myscript A B C
, который должен возвращать пространство имен (my_attribute = ['A', 'B', 'C']) или myscript
, которые должны возвращать значение по умолчанию, если не указаны аргументы т.е. пространство имен (my_attribute = ['A', 'B', 'C', 'D'])Argparse Позиционные аргументы или по умолчанию
Возможно ли это?
- nargs = '+' требует, по меньшей мере, 1 аргумент командной строки или вызывает ошибку
- nargs = '?' занимает 1 или 0 арг
- nargs = «*», кажется, как она должна работать, но не производит список по умолчанию, указанный в add_argument()
У меня есть ниже на данный момент.
parser.add_argument(
dest='my_attribute',
choices=('A', 'B', 'C', 'D'),
nargs='*',
default=['A', 'B', 'C', 'D'],
)
** Редактировать
, например: Это работает, но я должен указать -attr
, прежде чем A B. Я не хочу, чтобы использовать -attr
parser.add_argument(
'-attr',
dest='my_attribute',
choices=['A','B', 'C', 'D'],
nargs='+',
default=['A','B', 'C', 'D'],
Разве я не должен указывать здесь 3 аргумента? Я хочу иметь возможность указать от 0 до 4 аргументов, возвращая значение по умолчанию, когда я не укажу какие-либо аргументы. – puffin
Я обновил ответ для четырех аргументов :) –
С помощью этого 'выбора' использование:' usage: PROG [-h] {} {} {} {} '. – hpaulj