2012-01-24 4 views
6

印刷中のサブコマンドの選択を中止するにはどうしたらいいですか? http://docs.python.org/dev/library/argparse.html#sub-commandsで例を使用して、通常の出力は次のとおりです。Pythonのargparseモジュールで、中括弧でサブコマンドの選択肢を印刷しないようにするにはどうしたらいいですか?

usage: [-h] {foo,bar} ... 

optional arguments: 
-h, --help show this help message and exit 

subcommands: 

はちょうど最後の行を削除:

usage: [-h] {foo,bar} ... 

optional arguments: 
-h, --help show this help message and exit 

subcommands: 
{foo,bar} additional help 

私が欲しいものは、これを印刷することです。

答えて

0

あなたが望むのに何でも印刷する独自のメソッドで、ArgumentParser.print_usage()をオーバーライドします。最後の行を削除し、元のバージョンを呼び出し、結果を(ファイルに送信して)取得し、必要な部分だけを出力するだけでよい場合は、すべて実行します。

6

数十のサブコマンドの醜い縮められたリストで私のユーザーを迷惑にならないように、サブコマンドオブジェクトのmetavar属性を設定するだけです。私のコードは次のようになります。

import argparse 
parser = argparse.ArgumentParser(description='Stack Overflow example') 
subs = parser.add_subparsers() 
subs.metavar = 'subcommand' 
sub = subs.add_parser('one', help='does something once') 
sub = subs.add_parser('two', help='does something twice') 
parser.parse_args() 

そして単一-h引数でこのスクリプトを実行しているの出力は次のとおりです。

結果は、あなたがあなたの最高の希望の場合として示して正確に何ではありませんが、私は思いますargparse.ArgumentParserをサブクラス化せずに調整する必要があるものをオーバーライドしないと、最も面倒な作業になる可能性があります。

関連する問題