我想使用argparse,但我一直有問題,因爲某些原因,我的位置參數需要先在命令行上。我希望位置是最後的,因爲它是一個文件名列表。Argparse位置參數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)
如果我的命令行是:PGM --error文件名,我得到「錯誤:無法識別的參數:文件名」
如果我的CMD線PGM文件名--error它而不會出現錯誤。
我在做什麼錯。我讀過的所有內容都讓我相信這個位置可以先到後排。 Python 2.7環境。
如果我使位置需要(nargs ='+')它可以工作,但parm是可選的。
您可能會發現這有助於:https://github.com/docopt/docopt – Blender