我正在尝试使用 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 filename 我得到“错误:无法识别的参数:文件名”
如果我的 cmd 行是 pgm filename --error 它可以正常工作。
我究竟做错了什么。我读过的所有内容都让我相信位置可以排在第一位,也可以排在最后。Python 2.7 环境。
如果我进行位置要求 (nargs='+') 它可以工作,但参数是可选的。