Comme le montre le code suivant, je souhaite avoir un argument positionnel optionnel files
, je souhaite lui spécifier une valeur par défaut, lorsque des chemins sont passés, utiliser le chemin spécifié.Comment utiliser les arguments positionnels optionnels avec nargs = '*' arguments dans argparse?
Mais parce que --bar
peut avoir plusieurs arguments, le chemin passé n'est pas entré dans args.files
, comment résoudre ce problème? Merci!
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')
Comment 'argparse' est supposé savoir que'/path/to/file1' va avec 'files' et non avec' bar'? – mgilson