Python argparse обработка нескольких, но одинаковых флагов

1

Все,

Я хочу создать парсер аргументов, который позволит несколько спецификаций одной и той же опции командной строки (подумайте о -e grep: вы можете указать несколько -e). Вот мой тестовый код:

parser = argparse.ArgumentParser(description="...my description...")
parser.add_argument("file", nargs="*",
                    help="email file(s) to process")
parser.add_argument("-i", "--input",
                    nargs=1, dest="input_list",
                    help="a text file containing filenames to process")
argp = parser.parse_args(args)

Когда args содержит несколько -i, например: ['-i', 'file1', '-i', 'file2', 'arg1', 'arg2', 'arg3'], я только получил 'file2' в результирующем пространстве имен (argp.input_list).

Поддерживает ли argparse случай, когда input_list выше переменная destination_list может содержать более одного значения?

Wirawan

Теги:

1 ответ

1

action='append', вероятно, то, что вы хотите, то есть:

parser = argparse.ArgumentParser(description="...my description...")
parser.add_argument("file", nargs="*",
                    help="email file(s) to process")
parser.add_argument("-i", "--input",
                    dest="input_list", action='append',
                    help="a text file containing filenames to process")
argp = parser.parse_args(['-i', 'file1', '-i', 'file2', 'arg1', 'arg2', 'arg3'])

дает мне:

Namespace(file=['arg1', 'arg2', 'arg3'], input_list=['file1', 'file2'])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню