Как показано в следующем коде, я хочу иметь необязательный позиционный аргумент files
, я хочу указать для него значение по умолчанию, когда пути передаются, используйте указанный путь.Как использовать необязательные позиционные аргументы с аргументами nargs = '*' в argparse?
Но поскольку --bar
может иметь несколько аргументов, пройденный путь не входил в args.files
, как исправить это? Благодаря!
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo')
parser.add_argument('--bar', nargs='*')
parser.add_argument('files', nargs='?')
cmd = '--foo a --bar b c d '
print parser.parse_args(cmd.split())
# Namespace(bar=['b', 'c', 'd'], files=None, foo='a')
cmd = '--foo a --bar b c d /path/to/file1'
print parser.parse_args(cmd.split())
# Namespace(bar=['b', 'c', 'd', '/path/to/file1'], files=None, foo='a')
Как 'argparse' должен знать, что'/path/to/file1' идет с 'files', а не с' bar'? – mgilson