Я пытаюсь использовать argparse, но у меня проблема с тем, что по какой-то причине мои позиционные параметры должны быть первыми в командной строке. Я хочу, чтобы positional был последним, так как это список имен файлов.Argrelse positional parameter sequest
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)
если моя командная строка: имя файла --error PGM я получаю «ошибка: Непризнанные аргументы: имя файла»
если моя CMD линия файла --error PGM он работает без ошибок.
Что я делаю неправильно. Все, что я читал, приводит меня к мысли, что позиционирование может наступить первыми или последними. Python 2.7.
Если я делаю позиционное требование (nargs = '+'), оно работает, но парм не является обязательным.
Это может показаться вам полезным: https://github.com/docopt/docopt – Blender