Pythonでは、コマンドライン引数のパースには標準ライブラリargparseが使われます。このライブラリはかなり高機能なので、しっかりしたアプリケーションを設計したい場面ならきっと便利に使えます。

argparseの基本

argparseモジュールは、ユーザーフレンドリーなコマンドラインインターフェースを簡単に作成することができます。プログラムは必要な引数を定義し、argparseはそれらをsys.argvからパースする方法を決定します。

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))

上記のコードは、整数のリストを取り、合計または最大値を生成するPythonプログラムです。

kwargsとargparse

Pythonの関数でいうところの**kwargsみたいなものが欲しくなる場面もあります。そのような場合、以下のようなコードが参考になるでしょう。

def arg(*flags, args=None, **kwargs):
    import argparse
    p = argparse.ArgumentParser()
    p.add_argument(*flags, **kwargs)
    ns, _ = p.parse_known_args(args)
    return next(getattr(ns, d) for d in dir(ns) if not d.startswith('_'))

foo = arg('--foo')
bar = arg('--bar')
print('foo ==', foo)
print('bar ==', bar)

このコードでは、arg関数を定義して、**kwargsのようにコマンドライン引数を処理しています。

以上、Pythonのargparsekwargsの活用方法について解説しました。これらをうまく活用することで、より柔軟なコマンドラインインターフェースを設計することができます。

投稿者 admin

コメントを残す

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