2

オプションの引数が大量にある (頻繁に拡張/変更される) 大規模なプログラムの外部ドキュメントを生成しようとしています。オブジェクトから引数にアクセスして、parser渡されたすべての名前、説明、ヘルプなどをすべて表示できる方法があるかどうか知りたいです。このparse_args()関数はすべての追加情報を削除し、キーと値のペアのみを返します。

たとえば、次のコードがあるとします。

import argparse

def main():
    parser = argparse.ArgumentParser(description='Description of your program')
    parser.add_argument('-f','--foo', help='Foo help string')
    parser.add_argument('-b','--bar', help='Bar help string')
    parser.add_argument('-z','--zar', help='Zar help string')
    args = parser.parse_args()

パーサーですべての引数のリストを取得する方法はありますか? の線に沿った何か

[{'dest':'--f', 'help':'Foo help string'}, {'dest':'-b', 'help':etc...)]

もし私がそのようなものを手に入れることができれば、いくつかのきれいなhtmlドキュメントを簡単にマークアップできるでしょう.

4

1 に答える 1

2

内部的に、ArgumentParserはこれらを_actionsアトリビュートに格納します。

In [21]: parser._actions
Out[21]: 
[_HelpAction(option_strings=['-h', '--help'], dest='help', nargs=0, const=None, default='==SUPPRESS==', type=None, choices=None, help='show this help message and exit', metavar=None),
 _StoreAction(option_strings=['-f', '--foo'], dest='foo', nargs=None, const=None, default=None, type=None, choices=None, help='Foo help string', metavar=None),
 _StoreAction(option_strings=['-b', '--bar'], dest='bar', nargs=None, const=None, default=None, type=None, choices=None, help='Bar help string', metavar=None),
 _StoreAction(option_strings=['-z', '--zar'], dest='zar', nargs=None, const=None, default=None, type=None, choices=None, help='Zar help string', metavar=None)]

_option_string_actionsコマンドラインオプションを属性のキーとして使用して見つけることもできます。

In [14]: parser._option_string_actions
Out[14]: 
{'--bar': _StoreAction(option_strings=['-b', '--bar'], dest='bar', nargs=None, const=None, default=None, type=None, choices=None, help='Bar help string', metavar=None),
 '--foo': _StoreAction(option_strings=['-f', '--foo'], dest='foo', nargs=None, const=None, default=None, type=None, choices=None, help='Foo help string', metavar=None),
 '--help': _HelpAction(option_strings=['-h', '--help'], dest='help', nargs=0, const=None, default='==SUPPRESS==', type=None, choices=None, help='show this help message and exit', metavar=None),
 '--zar': _StoreAction(option_strings=['-z', '--zar'], dest='zar', nargs=None, const=None, default=None, type=None, choices=None, help='Zar help string', metavar=None),
 '-b': _StoreAction(option_strings=['-b', '--bar'], dest='bar', nargs=None, const=None, default=None, type=None, choices=None, help='Bar help string', metavar=None),
 '-f': _StoreAction(option_strings=['-f', '--foo'], dest='foo', nargs=None, const=None, default=None, type=None, choices=None, help='Foo help string', metavar=None),
 '-h': _HelpAction(option_strings=['-h', '--help'], dest='help', nargs=0, const=None, default='==SUPPRESS==', type=None, choices=None, help='show this help message and exit', metavar=None),
 '-z': _StoreAction(option_strings=['-z', '--zar'], dest='zar', nargs=None, const=None, default=None, type=None, choices=None, help='Zar help string', metavar=None)}
于 2013-09-20T15:50:57.207 に答える