Я пытаюсь использовать argparse для анализа аргументов командной строки для программы, над которой я работаю. По сути, мне нужно поддерживать множественные позиционные аргументы, распространенные в необязательных аргументах, но не может заставить argparse работать в этой ситуации. В реальной программе я использую настраиваемое действие (мне нужно сохранить моментальный снимок пространства имен каждый раз, когда найден позиционный аргумент), но проблема, которую я имею, может быть реплицирована с помощью действия append
:
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-a', action='store_true')
>>> parser.add_argument('-b', action='store_true')
>>> parser.add_argument('input', action='append')
>>> parser.parse_args(['fileone', '-a', 'filetwo', '-b', 'filethree'])
usage: ipython [-h] [-a] [-b] input
ipython: error: unrecognized arguments: filetwo filethree
Мне бы хотелось, чтобы это привело к пространству имен (a=True, b=True, input=['fileone', 'filetwo', 'filethree'])
, но не может понять, как это сделать - если это действительно возможно. Я не вижу ничего в документах или Google, которые говорят так или иначе, если это возможно, хотя вполне возможно (вероятно?) Я что-то упустил. У кого-нибудь есть предложения?