Я пытаюсь использовать argparse, но у меня по-прежнему возникает проблема, когда по какой-то причине мои позиционные параметры должны быть первыми в командной строке. Я хочу, чтобы позиция была последней, так как это список имен файлов.
self.parser = ArgumentParser(description=program_license,
formatter_class=RawDescriptionHelpFormatter,
conflict_handler='resolve')
self.parser.add_argument('-V', '--version',
action='version',
version=program_version_message)
self.parser.add_argument('--logfile', action='store',
dest='logfile', default='daddyvision.log')
self.parser.add_argument('prog', help=SUPPRESS, nargs=1)
self.parser.add_argument('library', metavar="library", nargs='*')
group_loglvl = self.parser.add_mutually_exclusive_group()
group_loglvl.add_argument("--verbose", dest="loglevel",
action="store_const", const="VERBOSE",
default='INFO')
group_loglvl.add_argument("--debug", dest="loglevel",
action="store_const", const="DEBUG")
group_loglvl.add_argument("--trace", dest="loglevel",
action="store_const", const="TRACE")
group_loglvl.add_argument("--quiet", dest="loglevel",
action="store_const", const="WARNING")
group_loglvl.add_argument("--errors", dest="loglevel",
action="store_const", const="ERROR")
args = self.parser.parse_args(arg)
если моя командная строка: pgm --error имя файла, я получаю «ошибка: нераспознанные аргументы: имя файла»
если моя строка cmd - имя файла pgm --error, она работает без ошибок.
Что я делаю не так. Все, что я читал, наводит меня на мысль, что позиционное положение может быть первым или последним. Среда Python 2.7.
Если я делаю позиционные требования (nargs='+'), это работает, но параметр не является обязательным.