このコード
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
gives argument -m/--magic: invalid choice: 'troll'
。
言語の文法が曖昧になっていることは承知していますが、文の最後に1つの単語(ターゲット)が存在するはずなので、オプションtroll
の引数ではないと言うことは可能です。-m
質問:
- argparseを大幅に打ち負かすことなく、位置引数を最後に指定する方法はありますか?
- argparseヘルプ出力にターゲットを実際に最初に指定する必要があることを示す方法はありますか?