Pythonコマンドラインパラメータ解析モジュールargparse

11604 ワード

前言
詳細については、私の個人ブログにアクセスしてください.
以前はoptparseが比較的火だったがpython 2.7バージョン以降、公式はこのモジュールを維持せず、argparseを強力にサポートしています.argparseモジュールは、ユーザーに優しいコマンドラインインタフェースを簡単に作成できます.彼女はsys.argvからパラメータを解析し、ヘルプとマニュアルを自動的に生成し、無効なパラメータが入力されたときにエラー情報を表示することができます.
基本的な使い方
標準ライブラリであるため、インストールする必要はなく、直接使用します.
import argparse
parser = argparse.ArgumentParser()
# parser.add_argument("-i", "--info", action = "store", type = "string", dest = "sample_info", help = "the sample information")
args = parser.parse_args()
# print(args.sample_info)

次のように、上記のコードを実行します.
  • パラメータを入力せず、出力結果もない:
    $ python3 test.py
    
  • デフォルトパラメータ--help(-hと略すこともできる)を入力と、自動的に生成するヘルプ情報が出力されます:
    $ python3 test.py --help
    
    #   :
    usage: test.py [-h]
    
    optional arguments:
      -h, --help  show this help message and exit
    
  • .
  • エラーパラメータを入力すると、エラーメッセージが出力されます:
    $ python3 test.py -verbose
    
    #   :
    usage: test.py [-h]
    test.py: error: unrecognized arguments: --verbose
    
  • 解析の作成argparseを使用する最初のステップは、次のようにArgumentParserオブジェクトを作成することです.
    import argparse
    
    parser = argparse.ArgumentParser(prog=None, usage=None,description=None, 
    epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, 
    argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True)
    

    新しいArgumentParserオブジェクトを作成します.すべてのパラメータはキーワードパラメータとして入力する必要があります.一部のパラメータについては、以下により詳細に説明しますが、簡単に言えば、次のとおりです.
  • prog-プログラムの名前(デフォルト:sys.argv[0])
  • usage-プログラムの使用を記述する文字列(デフォルト:解析器に追加されたパラメータから生成)
  • description-パラメータヘルプドキュメントの前に表示されるテキスト(デフォルト:なし)
  • epilog-パラメータヘルプドキュメントの後に表示されるテキスト(デフォルト:なし)
  • parents-ArgumentParserオブジェクトのリストです.これらのパラメータも
  • に含める必要があります.
  • formatter_class-ヘルプドキュメントの出力フォーマットをカスタマイズするクラス
  • prefix_chars-オプションパラメータの接頭辞文字セット(デフォルト:'-')
  • fromfile_prefix_chars-ファイルから他のパラメータを読み込む必要がある場合、ファイル名を識別するためのプレフィックス文字のセット(デフォルト:None)
  • .
  • argument_default-パラメータのグローバルデフォルト(デフォルト:None)
  • conflict_handler-競合オプションを解決するためのポリシー(通常は不要)
  • add_help-解析器に-h/--helpオプション(デフォルト:True)
  • を追加
  • allow_abbrev-省略が曖昧でない場合は、省略長オプション(デフォルト:True)
  • を許可します.
    prog
    デフォルトでは、ArgumentParserオブジェクトがヘルプメッセージに表示するプログラム名はsys.argv[0]です.プログラム名をカスタマイズするには、次のようにprogを使用します.
    >>> parser = argparse.ArgumentParser(prog='myprogram')
    >>> parser.print_help()
    usage: myprogram [-h]
    
    optional arguments:
     -h, --help  show this help message and exit
    
    sys.argv[0]またはprog=パラメータから決定されたプログラム名は、以下のように、ヘルプメッセージに%(prog)sフォーマット列で参照できます.
    >>> parser = argparse.ArgumentParser(prog='myprogram')
    >>> parser.add_argument('--foo', help='foo of the %(prog)s program')
    >>> parser.print_help()
    usage: myprogram [-h] [--foo FOO]
    
    optional arguments:
     -h, --help  show this help message and exit
     --foo FOO   foo of the myprogram program
    

    usage
    次のように使用方法メッセージを構築します.
    >>> parser = argparse.ArgumentParser(prog='PROG', usage='%(prog)s [options]')
    >>> parser.add_argument('--foo', nargs='?', help='foo help')
    >>> parser.add_argument('bar', nargs='+', help='bar help')
    >>> parser.print_help()
    usage: PROG [options]
    
    positional arguments:
     bar          bar help
    
    optional arguments:
     -h, --help   show this help message and exit
     --foo [FOO]  foo help
    

    description
    この程度で何をするか、どのようにするかを簡単に説明します.ヘルプ・メッセージでは、コマンド・ラインの使用文字列と、次のようにさまざまなパラメータのヘルプ・メッセージの間に説明が表示されます.
    >>> parser = argparse.ArgumentParser(description='A foo that bars')
    >>> parser.print_help()
    usage: argparse.py [-h]
    
    A foo that bars
    
    optional arguments:
     -h, --help  show this help message and exit
    

    epilog
    いくつかのプログラムはdescriptionパラメータの後に追加のプログラムの説明を表示するのが好きです.以下のようにします.
    >>> parser = argparse.ArgumentParser(
    ...     description='A foo that bars',
    ...     epilog="And that's how you'd foo a bar")
    >>> parser.print_help()
    usage: argparse.py [-h]
    
    A foo that bars
    
    optional arguments:
     -h, --help  show this help message and exit
    
    And that's how you'd foo a bar
    

    add_help
    自動生成されたヘルプ情報を閉じるかどうかは、次のとおりです.
    >>> parser = argparse.ArgumentParser(prog='PROG', add_help=False)
    >>> parser.add_argument('--foo', help='foo help')
    >>> parser.print_help()
    usage: PROG [--foo FOO]
    
    optional arguments:
     --foo FOO  foo help
    

    パラメータの追加add_argument()メソッドを使用してパラメータを追加します.ここで、一部のパラメータについては、以下により詳細に説明しますが、簡単に言えば、以下のとおりです.
  • name or flags-fooまたは-fなどの名前またはオプション文字列のリスト.
  • action-パラメータがコマンドラインに表示されたときに使用される動作の基本タイプ.
  • nargs-コマンドラインパラメータが消費すべき数.
  • const−いくつかのactionおよびnargsによって所望の定数が選択される.
  • default-パラメータがコマンドラインに表示されない場合に使用される値.
  • type-コマンドラインパラメータが変換されるべきタイプ.
  • choices-使用可能なパラメータの容器.
  • required-このコマンド・ライン・オプションが省略可能かどうか(オプションのみ使用可能).
  • help-このオプションの役割の簡単な説明です.
  • metavar-使用方法メッセージで使用されるパラメータ値の例.
  • dest-parse_に追加されましたargs()が返すオブジェクトのプロパティ名.

  • name or flags add_argument()に渡される最初のパラメータは、次のように、flagsまたは単純なパラメータ名でなければなりません.
    >>> parser.add_argument('-f', '--foo')
    
    or
    
    >>> parser.add_argument('bar')
    

    action
  • store-パラメータの値を格納します.これはデフォルトの動作です.
  • >>> parser = argparse.ArgumentParser()
    >>> parser.add_argument('--foo')
    >>> parser.parse_args('--foo 1'.split())
    Namespace(foo='1')
    
  • store_const-constネーミングパラメータによって指定された値を格納します.store_const動作は、通常、いくつかのフラグを指定するためにオプションで使用される.
  • >>> parser = argparse.ArgumentParser()
    >>> parser.add_argument('--foo', action='store_const', const=42)
    >>> parser.parse_args(['--foo'])
    Namespace(foo=42)
    
  • store_trueおよびstore_false-store_constおよびTrueの値を格納するために使用されるFalseの特別な例である.また、デフォルト値はそれぞれFalseTrueです.
  • >>> parser = argparse.ArgumentParser()
    >>> parser.add_argument('--foo', action='store_true')
    >>> parser.add_argument('--bar', action='store_false')
    >>> parser.add_argument('--baz', action='store_false')
    >>> parser.parse_args('--foo --bar'.split())
    Namespace(foo=True, bar=False, baz=True)
    
  • append-リストを格納し、各パラメータ値をリストに追加します.オプションを複数回使用できる場合に便利です.
  • >>> parser = argparse.ArgumentParser()
    >>> parser.add_argument('--foo', action='append')
    >>> parser.parse_args('--foo 1 --foo 2'.split())
    Namespace(foo=['1', '2'])
    
  • count-キーワードパラメータの出現数または回数を計算します.たとえば、成長の詳細レベルに役立ちます.
  • >>> parser = argparse.ArgumentParser()
    >>> parser.add_argument('--verbose', '-v', action='count')
    >>> parser.parse_args(['-vvv'])
    Namespace(verbose=3)
    
  • version-version=呼び出し中のadd_argument()ネーミングパラメータが所望され、バージョン情報が印刷され、呼び出し後に終了する.
  • >>> import argparse
    >>> parser = argparse.ArgumentParser(prog='PROG')
    >>> parser.add_argument('--version', action='version', version='%(prog)s 2.0')
    >>> parser.parse_args(['--version'])
    PROG 2.0
    

    転載先:https://juejin.im/post/5cf4bdfae51d4510bf1d662f