Pythonのargparseモジュールは、コマンドラインインターフェースの作成を容易にします。このモジュールは、ユーザーフレンドリーなコマンドラインインターフェースを作成するための機能を提供しています。また、argparseモジュールは自動的にヘルプと使用法のメッセージを生成します。

argparseモジュールの主要な機能は、argparse.ArgumentParserのインスタンスを中心に構築されています。ArgumentParserは、引数の仕様のコンテナであり、パーサ全体に適用されるオプションを持っています。以下に、基本的なargparseの使用方法を示します。

import argparse

parser = argparse.ArgumentParser(
    prog='ProgramName',
    description='What the program does',
    epilog='Text at the bottom of help'
)

parser.add_argument('filename')  # positional argument
parser.add_argument('-c', '--count')  # option that takes a value
parser.add_argument('-v', '--verbose', action='store_true')  # on/off flag

args = parser.parse_args()
print(args.filename, args.count, args.verbose)

上記のコードでは、argparse.ArgumentParserのインスタンスを作成し、そのインスタンスに引数の仕様を追加しています。add_argumentメソッドは、位置引数、値を取るオプション、オン/オフフラグをサポートしています。

さらに、argparseを使用して、一般的なCLIにおける--help--versionのような動きをするコマンドを実装することも可能です。具体的には、他の引数やオプションよりも優先して実行され、実行された後、即時終了するという要件を満たすことができます。

以下に、そのようなコマンドを実装したサンプルスクリプトを示します。

import sys
from argparse import SUPPRESS, Action, ArgumentParser

def show_system_version():
    print(sys.version)

class SampleAction(Action):
    def __init__(self, option_strings, dest=SUPPRESS, default=SUPPRESS, help=None):
        super().__init__(
            option_strings=option_strings,
            dest=dest,
            default=default,
            nargs=0,
            help=help,
        )

    def __call__(self, parser, namespace, values, option_string=None):
        show_system_version()
        parser.exit()

def main():
    parser = ArgumentParser()
    parser.add_argument(
        "-S", "--system",
        action=SampleAction,
        help="show system version and exit"
    )
    parser.add_argument("--mushi", help="無視されるべきオプション")
    args = parser.parse_args()
    print(args.mushi)

if __name__ == "__main__":
    main()

このスクリプトでは、-Sまたは--systemをオプションとして与えられたときに、print(sys.version)を実行して処理を終了します。このように、argparseモジュールを使用することで、Pythonで高度なコマンドラインインターフェースを簡単に作成することができます。

以上が、Pythonのargparseモジュールの拡張ヘルプ機能についての解説です。この情報がPythonのコマンドラインインターフェースの作成に役立つことを願っています。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です