私は argparse を使用しており、サブコマンドと位置引数を混在させようとしていますが、次の問題が発生しました。
このコードは正常に実行されます:
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
parser.add_argument('positional')
subparsers.add_parser('subpositional')
parser.parse_args('subpositional positional'.split())
上記のコードは引数を に解析しますNamespace(positional='positional')
が、位置引数を nargs='?' に変更すると そのような:
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
parser.add_argument('positional', nargs='?')
subparsers.add_parser('subpositional')
parser.parse_args('subpositional positional'.split())
次のエラーが発生します。
usage: [-h] {subpositional} ... [positional]
: error: unrecognized arguments: positional
どうしてこれなの?