Код: Выделить всё
In : parser.parse_args(['x', 'a', 'b'])
Out: Namespace(pattern=['x'], files=['a', 'b'])
In : parser.parse_args(['-e', 'x', 'a', 'b'])
Out: Namespace(pattern=['x'], files=['a', 'b'])
In : parser.parse_args(['-e', 'x', '-e', 'y', 'a', 'b'])
Out: Namespace(pattern=['x', 'y'], files=['a', 'b'])
Я попробовал выполнить parser.add_argument('pattern', '-e', '--pattern'), но получил шаблон ошибки, который должен начинаться с '-', который я прочитал, поскольку аргумент не может быть одновременно позиционным и именованным.
Я мог бы сделать:
Код: Выделить всё
parser.add_argument('-e', '--pattern', action='append')
parser.add_argument('positional', nargs='+')
args = parser.parse_args()
patterns = args.pattern or args.positional[0]
files = args.positional[(not args.pattern):]
assert len(files)
Подробнее здесь: https://stackoverflow.com/questions/798 ... -and-named
Мобильная версия