Все,
Я хочу создать парсер аргументов, который позволит несколько спецификаций одной и той же опции командной строки (подумайте о -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
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'])