引数と位置引数で python-argparse を使用したい。コマンドラインにスクリプトがあるとします(これは単純で愚かな例です)、これまでのコードは次のとおりです。
#!/usr/bin/env python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--verbose', action='store_true')
subparsers = parser.add_subparsers(help='command', dest='command')
cmd1_parser = subparsers.add_parser('command1')
cmd1_parser.add_argument('--verbose', action='store_true')
args = parser.parse_args()
print args
このスクリプトを次のように呼び出します。
~ $ myscript --verbose command1 --verbose
Namespace(command='command1', verbose=True)
~ $ myscript command1 --verbose
Namespace(command='command1', verbose=True)
~ $ myscript --verbose command1
Namespace(command='command1', verbose=True)
ご覧のとおり、常に同じ名前空間オブジェクトを取得し、詳細コマンドが通常のパラメーターなのかサブパーサー パラメーターなのかを区別できません。しかし、これらのパラメーターを個別に処理するにはそれが必要です。それを行うための簡単な方法 (最小限のコード作業で) は何でしょうか?
編集:
Python stdlib イシュー トラッカー内にイシューを提出しました: http://bugs.python.org/issue15327