私のargparseはトップレベルに3つのフラグ(store_true)しか持っていません。他のすべてはサブパーザルで処理されます。 myprog.py --help
を実行すると、出力には、通常の{sub1, sub2, sub3, sub4, ...}
のようなすべてのサブコマンドのリストが表示されます。だから、デフォルトは素晴らしい仕事です...argparse subparserモノリシックヘルプ出力
私は通常、私が必要とする正確なサブコマンド名とそのすべてのオプションを覚えていません。だから私は2件のヘルプの検索をやって終わる:
myprog.py --help
myprog.py sub1 --help
私は頻繁にこれを行う、私は1つのステップにこれを詰め込むことにしました。私は、トップレベルのヘルプが巨大な要約を出力するようにしたいのですが、手動でリストをスクロールします。私はそれがはるかに高速であることがわかります(私にとっては少なくとも)。
私はRawDescriptionHelpFormatterを使用していましたが、長いヘルプ出力を手作業で入力していました。しかし、今ではサブコマンドがたくさんあり、管理するのに苦労しています。
1回のプログラム呼び出しで冗長なヘルプ出力を得る方法はありますか?
もしそうでない場合は、私のargparseインスタンスのサブパーザーを反復処理し、それぞれのヘルプ出力を個別に取り出すことができます(後で一緒に接着します)。
ここでは、私のargparse設定の簡単な概要を示します。私はこのコードをきれいに拭き取った/取り除いたので、これは少しの助けなしには動かないかもしれません。
parser = argparse.ArgumentParser(
prog='myprog.py',
formatter_class=argparse.RawDescriptionHelpFormatter,
description=textwrap.dedent(""" You can manually type Help here """))
parser.add_argument('--debuglog', action='store_true', help='Verbose logging for debug purposes.')
parser.add_argument('--ipyonexit', action='store_true', help='Drop into an embeded Ipython session instead of exiting command.')
subparser = parser.add_subparsers()
### --- Subparser B
parser_b = subparser.add_parser('pdfreport', description="Used to output reports in PDF format.")
parser_b.add_argument('type', type=str, choices=['flatlist', 'nested', 'custom'],
help="The type of PDF report to generate.")
parser_b.add_argument('--of', type=str, default='',
help="Override the path/name of the output file.")
parser_b.add_argument('--pagesize', type=str, choices=['letter', '3x5', '5x7'], default='letter',
help="Override page size in output PDF.")
parser_b.set_defaults(func=cmd_pdf_report)
### ---- Subparser C
parser_c = subparser.add_parser('dbtables', description="Used to perform direct DB import/export using XLS files.")
parser_c.add_argument('action', type=str, choices=['push', 'pull', 'append', 'update'],
help="The action to perform on the Database Tables.")
parser_c.add_argument('tablename', nargs="+",
help="The name(s) of the DB-Table to operate on.")
parser_c.set_defaults(func=cmd_db_tables)
args = parser.parse_args()
args.func(args)
いくつかのコード、ちょうど2つのオプションと2つのサブパーザーを備えた小さな例を示してください。 –