这段代码
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('target', help='Specifiy who to attack!')
magic = ['fireball', 'heal', 'microwave']
parser.add_argument('-m', '--magic', nargs='*',
choices=magic,
help=('Magic'))
parsed_arguments = parser.parse_args()
生成此帮助输出
usage: Example.py [-h]
[-m [{fireball,heal,microwave} [{fireball,heal,microwave} ...]]]
target
positional arguments:
target Specifiy who to attack!
optional arguments:
-h, --help show this help message and exit
-m [{fireball,heal,microwave} [{fireball,heal,microwave} ...]], --magic [{fireball,heal,microwave} [{fireball,heal,microwave} ...]]
Magic
我认为帮助输出令人困惑,并且看起来应该最后指定目标,但是这不起作用:python example.py -m fireball troll
给argument -m/--magic: invalid choice: 'troll'
.
我意识到语言的语法变得模棱两可,但仍然可以说,因为句子最后应该存在一个单词(目标)troll
不是该-m
选项的论据。
问题:
- 有没有办法让位置参数最后指定而不会击败 argparse?
- 有没有办法让 argparse 帮助输出表明确实应该首先指定目标?