Как показывает ваша ссылка, вы можете дать parse_args
список строк.
In [210]: parser = argparse.ArgumentParser()
In [211]: parser.add_argument('-i','--image_types', nargs='*', default='');
Чтобы проверить синтаксический анализ без аргументов командной строки, предоставив ему пустой список:
In [212]: parser.parse_args([])
Out[212]: Namespace(image_types='')
Со списком строк:
In [213]: parser.parse_args(['-i','a','b'])
Out[213]: Namespace(image_types=['a', 'b'])
или разделить строку:
In [214]: parser.parse_args('-i a b'.split())
Out[214]: Namespace(image_types=['a', 'b'])
Ответы на вопросы argparse
часто используют одну из этих форм для иллюстрации своих действий.split
удобно.
Также возможно создать пространство имен args
напрямую:
In [215]: argparse.Namespace(image_types=['a','b','c'])
Out[215]: Namespace(image_types=['a', 'b', 'c'])
Я не следую вашей интерпретации результата для
parser.parse_args(["--example", "ab", "cd"])
Это должно привести к args.example
, то есть ["ab", "cd"]
.
Это не очень хороший тестовый пример:
parser.parse_args(["--example", "ab cd"])
, чтобы произвести то же самоеиз командной строки вы должны будете использовать
python --example "ab cd"
Кавычки переопределяют нормальное разделение на пустое пространство.Вы должны использовать shlex.split
для эмуляции этого поведения.